尝试使用Hashmap <integer,integer =“”> </integer,>

时间:2012-01-20 03:28:58

标签: java hashmap

在这种情况下,每次运行此for循环时,如何将键[i]递增1,我现在设置的方式所有元素只被映射到1.我试图找出如何很多时候每个数字出现。我在list.get(i)之后的空位中尝试了+1,但是再次只将每个元素映射到1.谢谢。

    List<Integer> list = new ArrayList<Integer>();
    HashMap<Integer,Integer> Mode = new HashMap<Integer, Integer>();
    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {
            list.add(arr[i][j]); 
        }
    }
    System.out.println(list);
    int count = 1;
    for(int i = 0; i < list.size(); i ++) {
        Mode.put(list.get(i), );

3 个答案:

答案 0 :(得分:3)

您需要在此处指定Key

for(int i = 0; i < list.size(); i++) {
        int value=list.get(i);
        if(!Mode.containsKey(value))
            Mode.put(value,1);
        else
            Mode.put(value,Mode.get(value)+1);
}

答案 1 :(得分:2)

根据你的评论,

for(int i = 0; i < list.size(); i ++) {
   if(Mode.containsKey(list.get(i)) ){
       Integer count = Mode.get(list.get(i));

       Mode.put(list.get(i), ++count);}
   else
       Mode.put(list.get(i), 1);

答案 2 :(得分:1)

如果您有这个选项,您可能会发现使用Multiset中的Guava更容易。

Multiset<Integer> seen = HashMultiset.create();
for (int[] row : arr) {
  for (int elem : row) {
    seen.add(elem); // none of that nasty dealing with the Map
  }
}
// you can look up the count of an element with seen.count(elem)
E mostCommon = null;
int highestCount = 0;
for (Multiset.Entry<Integer> entry : seen.entrySet()) {
  if (entry.getCount() > highestCount) {
    mostCommon = entry.getElement();
    highestCount = entry.getCount();
  }
}
return mostCommon; // this is the most common element