首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将HashMap整数与arrayList int进行比较不知何故并不总是有效的。

将HashMap整数与arrayList int进行比较不知何故并不总是有效的。
EN

Stack Overflow用户
提问于 2017-05-31 20:24:38
回答 1查看 65关注 0票数 0

正如您从标题中看到的那样,我正在尝试将HashMap的键与来自ArrayList的int键进行比较。对于前47次比较,38 = 38,但在48次比较中,38 != 38。你能帮我吗?

代码语言:javascript
复制
`@Override
public HashMap<Integer, Integer> populate(int roomId){
    ArrayList<Item> original = items.populateTable(roomId);
    HashMap<Integer, Integer> refined = new HashMap<>();
    for(int i = 1; i < original.size(); i++){
        Iterator it = refined.entrySet().iterator();
        refined.put(original.get(0).getStockId(), 1); // put the first item in the hashMap
        while(it.hasNext()){
            Map.Entry pair = (Map.Entry)it.next();
            if( pair.getKey().equals( original.get(i).getStockId() ) ) //if item is not in hashMap
            {
                System.out.println(pair.getKey()+"++");
                refined.put(original.get(i).getStockId(), refined.get(original.get(i).getStockId()) + 1); //increment the value
            }
            else{
                System.out.println("NEW:"+pair.getKey());
                refined.put(original.get(i).getStockId(), 1); // add it to hashMap
            }
        }
    }
    Iterator it1 = refined.entrySet().iterator();
    while(it1.hasNext()){
        Map.Entry pair1 = (Map.Entry)it1.next();
        System.out.println(pair1.getKey() + " = " + pair1.getValue());
    }

    return refined;
}`

这是控制台

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-31 21:21:30

看起来你在解决问题,数数数组中遇到的所有数字,如果是一种情况,你就做错了。在38!=38 (控制台中的‘New: 38’)的迭代中,它不再是38,它比较38和39,这就是下一行'39++‘的原因。

在这里你可能想做什么。

代码语言:javascript
复制
ArrayList<Item> original = items.populateTable(roomId);
HashMap<Integer, Integer> refined = new HashMap<>();
for(int i = 0; i < original.size(); i++){
    int key = original.get(i).getStockId();
    int count = refined.containsKey(key) ? refined.get(key) : 0;
    refined.put(key, count + 1);
}
Iterator it1 = refined.entrySet().iterator();
while(it1.hasNext()){
    Map.Entry pair1 = (Map.Entry)it1.next();
    System.out.println(pair1.getKey() + " = " + pair1.getValue());
}

输入38,38,38,39,39

38 =3

39 =2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44294055

复制
相关文章

相似问题

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