写论文写到头大,然后休息一下,写了一个统计给定数组中出现最多次数,并打印相应元素的一个小小程序。假定给定的数组是字符串型的数组。 在我的Blog里:判断一个数组中出现次数最多的元素。这里贴出代码和输出:
import java.util.*;public class FindMostEle {
private static HashMap<String, Integer> map;

public static HashMap<String, Integer> mostEle(String[] strArray){
map = new HashMap<String, Integer>();

String str = ""; int count = 0;
int result = 0;

for(int i=0; i<strArray.length; i++)
str += strArray[i];

for(int i=0; i<strArray.length; i++){
String temp = str.replaceAll(strArray[i], "");
count = (str.length() - temp.length())/strArray[i].length();

if (count > result){
map.clear();
map.put(strArray[i], count);
result = count;
}
else if(count == result)
map.put(strArray[i], count);
}
return map;
}

public static void main(String args[]){
String[] strArray = {"11", "11", "2", "2", "4", "5", "4"};

HashMap<String, Integer> result = mostEle(strArray);

ArrayList<Integer> c = new ArrayList<Integer>(result.values());
Set<String> s = result.keySet();

System.out.print("一共有"+ result.size() +"元素最多。它们分别是");
System.out.print(s);
System.out.println(",分别出现了"+ c.get(0) +"次。");

}
}一共有3元素最多。它们分别是[2, 11, 4],分别出现了2次。
我的问题是为什么输出的元素不是11,2和4呢?估计是脑子最近比较慢,有烧焦了的状况了。大家给我看看...主要是把实现封装在一个方法...有没有更好的点子...欢迎欢迎...

解决方案 »

  1.   

    shit!!!怎么才20分...我去睡觉了...真晕...明天加分...哎...别拍我板砖啊...
      

  2.   

    貌似我运行的结果和你不一样
    一共有3元素最多。它们分别是[2, 4, 11],分别出现了2次。
    莫非HashMap里的值是随机排列?
      

  3.   

                else if(count == result)
                    map.put(strArray[i], count);
            }   改成这样
                else if(map.get(strArray[i]) == null && count == result)
                    map.put(strArray[i], count);
            }     
    会好一点。
      

  4.   

    你的意思是判断当这个key不存在的时候,再加入,是吧?这样就提高效率了,对吧?
      

  5.   

    HashMap 改成LinkedHashMap就好了。
      

  6.   

    不会吧,难道真的HashMap不是顺序进入,顺序输出的吗?...我晕...
      

  7.   

    我闷,猴子肯定是脑子烧了~
    hash容器是根据存储位置(hash码)来排序的,并不是维护顺序~
      

  8.   

    我也有很多不懂的嘛...不过你这么一说...我就知道是我粗心了...我记得看到过HashMap是靠Hash码来维护顺序的了  呵呵  谢谢提醒...
      

  9.   

    HashMap是根据key的HashCode在经过Hash算法,进行排序的!详见http://blog.csdn.net/mgoann