java中用for循环求一个数组中出现最多次数的元素

如题所述

也就是求众数

public static double mode(double[] array) {
  Arrays.sort(array);
  int count = 1;
  int longest = 0;
  double mode = 0;
  for (int i = 0; i < array.length - 1; i++) {
   if (array[i] == array[i + 1]) {
    count++;
   } else {
    count = 1;//如果不等于,就换到了下一个数,那么计算下一个数的次数时,count的值应该重新符值为一
    continue;
   }
   if (count > longest) {
    mode = array[i];
    longest = count;
   }
  }
  System.out.println(longest);//打印出这个数出现的次数已判断是否正确
  return mode;
 }



调用这个方法就可以了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-19
Map<Integer, Integer> m = new HashMap<Integer, Integer>();
// key:Integer(int)(数组元素的类型)Value:Integer(次数)
int[] a = new int[20];// 给a赋值
a[0] = 1;
a[1] = 2;
for (int i = 0; i < a.length; i++) {
if (m.get(a[i]) == null) {
m.put(a[i], 1);// 如果这个元素第一次出现
} else {
m.put(a[i], m.get(a[i]) + 1);// 重复则+1
}
}
int max = 0;int id=0;
Set<Integer> key=null;
for (int i = 0; i < m.size(); i++) {
if (m.get(i) > max) {
max = m.get(i);// 获取最大次数
id=i;
key = m.keySet();
}
}
System.out.println("出现最多的是:" + key.toArray()[id]);
System.out.println("出现最多次数:" + max);
结果:
出现最多的是:0
出现最多次数:18
望采纳
第2个回答  2015-08-19
// 测试数组
int[] array = {2,4,6,8,2,5,8,2,10};

HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();

for (int i : array) {
hashMap.put(i, hashMap.get(i) == null ? 0 :hashMap.get(i)+1);
}

Set<Integer> keySet = hashMap.keySet();

int maxKey = 0;
int maxValue = 0;

for (Integer integer : keySet) {
if(hashMap.get(integer) > maxValue){
maxKey = integer;
maxValue = hashMap.get(integer);
}
}

System.out.println(maxKey);

相似回答