import java.util.*;public class test { public static void main(String[] args) { int[] array = {1,2,2,3,4,4,5,6,7,7,8,9}; int iMaxCount=0; //因为可能有多个元素的出现次数同时位居第一, //所以结果应该是一个集合。用一个List来装载。 List<Integer> list=new ArrayList<Integer>(); for (int i=0;i<array.length;i++){ int iCount=0; for (int j=0;j<array.length;j++){ if (array[i]==array[j]) iCount++; } if (iCount>iMaxCount){ list.clear(); list.add(array[i]); iMaxCount=iCount; }else if (iCount==iMaxCount){ if (list.indexOf(array[i])==-1) list.add(array[i]); } } System.out.println("出现次数最多的元素为"+list.toString()); } } 运行结果:出现次数最多的元素为[2, 4, 7]
String arr[] = { "4", "5", "6", "7", "4", "3", "4", "5", "6", "3", "6", "3", "5", "6", "4", "3", "345", "8", "9" }; int max = 0; Set<Object> result = new HashSet<Object>(); Map<Object, Integer> mp = new HashMap<Object, Integer>(); for (int i = 0; i < arr.length; i++) { Integer num = mp.put(arr[i], 1); if (num != null) { mp.put(arr[i], num + 1); if (num > max) { result.clear(); result.add(arr[i]); max = num; } else if (num == max) { result.add(arr[i]); } } } System.out.println(mp); System.out.println(result);
这种东西能不用set就不用set吧,用set就一点意思都没有了
不敢苟同,那JAVA设计那么多类干什么!不过本题直接用一个Map就可以了
String[] s = {"a","b","a","a","b","c"}; HashMap<String, Integer> hm = new HashMap<String, Integer>();
for (int i = 0; i < s.length; i++) { if (!hm.containsKey(s[i])) { hm.put(s[i], 1); } else { hm.put(s[i], hm.get(s[i]).intValue()+1); } }
System.out.println(hm);
Integer类型,有intValue()方法。把Integer类型转化为int类型。判断数组中最大元素的 也是面试题 替换 = 比较 清空 添加 if(iCount>iMaxCount){ list.clear(); list.add(array[i]); iMaxCount=iCount; }else if (iCount==iMaxCount){ if (list.indexOf(array[i])==-1) list.add(array[i]); }if (num > max) { result.clear(); result.add(arr[i]); max = num; } else if (num == max) { result.add(arr[i]); }if (list.indexOf(array[i])==-1) 这句是什么意思?上回我上机自己也是先排序 再比较。
if (list.indexOf(array[i])==-1) 返回list中array[i]的索引,如果找不到就返回-1.
用map结构就可以啦,key值为元素,value是出现次数。
虽然结帖了不过还是想问一下8楼的这句是怎么回事? Integer num = mp.put(arr[i], 1);
用replaceAll实现的 感觉好理解点 import java.util.*;public class FindMostInArray { public static void main(String args[]){ int[] intArray = {1,2,2,3,4,4,5,6,7,7,8,9}; List<Integer> list = new ArrayList<Integer> ();
System.out.println("The most repeat number is: "+ MaxCount +"\nThe duplicated elements are: "+ list.toString()); } }The most repeat number is: 2 The duplicated elements are: [2, 4, 7]
put(K key, V value) 与 key 关联的旧值;如果 key 没有任何映射关系,则返回 null 如果map中含有这个key就返回 value 由于我这里是泛型的<Object, Integer> 所以就返回integer类型的value
int[] array = {5, 9, 3, 2, 2, 1, 4, 7, 8, 8, 10, 15, 15, 15};
Result result = new Result();
stat(array, result);
System.out.println("出现次数最多的元素:" + result.getElement());
System.out.println("出现次数:" + result.getCount());
} public static boolean stat(int[] array, Result result) {
if (array == null || array.length == 0) {
return false;
}
Arrays.sort(array);
int length = 1;
int element = -1;
for (int i = 1; i < array.length; i++) {
if (array[i] == array[i - length]) {
length++;
element = array[i];
}
}
result.setCount(length);
result.setElement(element);
return true; }
}class Result { private int element;
private int count; public Result() {
} public int getCount() {
return count;
} public void setCount(int count) {
this.count = count;
} public int getElement() {
return element;
} public void setElement(int element) {
this.element = element;
}
}
http://topic.csdn.net/u/20080821/21/f739f977-b51f-4eb3-8169-86a521f00a3d.html
public static void main(String[] args) {
int[] array = {1,2,2,3,4,4,5,6,7,7,8,9};
int iMaxCount=0;
//因为可能有多个元素的出现次数同时位居第一,
//所以结果应该是一个集合。用一个List来装载。
List<Integer> list=new ArrayList<Integer>();
for (int i=0;i<array.length;i++){
int iCount=0;
for (int j=0;j<array.length;j++){
if (array[i]==array[j])
iCount++;
}
if (iCount>iMaxCount){
list.clear();
list.add(array[i]);
iMaxCount=iCount;
}else if (iCount==iMaxCount){
if (list.indexOf(array[i])==-1)
list.add(array[i]);
}
}
System.out.println("出现次数最多的元素为"+list.toString());
}
}
运行结果:出现次数最多的元素为[2, 4, 7]
"3", "5", "6", "4", "3", "345", "8", "9" };
int max = 0;
Set<Object> result = new HashSet<Object>();
Map<Object, Integer> mp = new HashMap<Object, Integer>(); for (int i = 0; i < arr.length; i++) {
Integer num = mp.put(arr[i], 1);
if (num != null) {
mp.put(arr[i], num + 1);
if (num > max) {
result.clear();
result.add(arr[i]);
max = num;
} else if (num == max) {
result.add(arr[i]); }
}
} System.out.println(mp);
System.out.println(result);
String[] s = {"a","b","a","a","b","c"};
HashMap<String, Integer> hm = new HashMap<String, Integer>();
for (int i = 0; i < s.length; i++) {
if (!hm.containsKey(s[i])) {
hm.put(s[i], 1);
} else {
hm.put(s[i], hm.get(s[i]).intValue()+1);
}
}
System.out.println(hm);
if(iCount>iMaxCount){
list.clear();
list.add(array[i]);
iMaxCount=iCount;
}else if (iCount==iMaxCount){
if (list.indexOf(array[i])==-1)
list.add(array[i]);
}if (num > max) {
result.clear();
result.add(arr[i]);
max = num;
} else if (num == max) {
result.add(arr[i]); }if (list.indexOf(array[i])==-1) 这句是什么意思?上回我上机自己也是先排序 再比较。
返回list中array[i]的索引,如果找不到就返回-1.
Integer num = mp.put(arr[i], 1);
import java.util.*;public class FindMostInArray {
public static void main(String args[]){
int[] intArray = {1,2,2,3,4,4,5,6,7,7,8,9};
List<Integer> list = new ArrayList<Integer> ();
String str = "";
for(int i=0; i<intArray.length; i++){
str += String.valueOf(intArray[i]);
} int MaxCount = 0;
for(int i=0; i<intArray.length; i++){
String tempString = str.replaceAll(String.valueOf(intArray[i]), "");
int tempCount = str.length() - tempString.length();
if (tempCount > MaxCount){
list.clear();
list.add(intArray[i]);
MaxCount = tempCount;
}
else if((tempCount == MaxCount) && (!list.contains(intArray[i]))){
list.add(intArray[i]);
}
}
System.out.println("The most repeat number is: "+ MaxCount +"\nThe duplicated elements are: "+ list.toString());
}
}The most repeat number is: 2
The duplicated elements are: [2, 4, 7]
与 key 关联的旧值;如果 key 没有任何映射关系,则返回 null
如果map中含有这个key就返回 value
由于我这里是泛型的<Object, Integer>
所以就返回integer类型的value