首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用Hashmap<Integer、Integer>

尝试使用Hashmap<Integer、Integer>
EN

Stack Overflow用户
提问于 2012-01-20 11:28:58
回答 3查看 10.5K关注 0票数 1

在这种情况下,当我每次运行这个for循环时,我该如何将键i递增1呢?按照我目前设置的方式,所有的元素都只映射到1。我试图找出每个数字出现的次数。我已经在list.get(i)之后的空白处尝试了+1,但再次只将每个元素映射到1。谢谢。

代码语言:javascript
复制
    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), );
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-20 12:26:21

如果你有选择,你可能会发现使用GuavaMultiset会更容易一些。

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2012-01-20 11:31:24

您需要在此处指定Key

代码语言:javascript
复制
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);
}
票数 3
EN

Stack Overflow用户

发布于 2012-01-20 11:31:53

根据你的评论,

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8936413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档