Java 将HashMap Integer与arrayList int进行比较并不总是可行的

Java 将HashMap Integer与arrayList int进行比较并不总是可行的,java,Java,正如您从标题中看到的,我试图将HashMap的键与ArrayList中的int进行比较。 对于前47个比较,38=38,但在48个比较中,38!=38你能帮我吗 `@Override public HashMap<Integer, Integer> populate(int roomId){ ArrayList<Item> original = items.populateTable(roomId); HashMap<Integer, Integer

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

`@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;
}`
`@覆盖
公共哈希映射填充(int roomId){
ArrayList original=items.populateTable(roomId);
HashMap精炼=新的HashMap();
对于(int i=1;i

看来你们正在解决计算数组中遇到的所有数字的问题,若这是一种情况,那个么你们就错了。在迭代中38=38('New:38'在控制台中)它不再是38了,它比较38和39,这就是为什么下一行是'39++'

这是你可能想做的

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());
}
ArrayList original=items.populateTable(roomId);
HashMap精炼=新的HashMap();
对于(int i=0;i
输入38,38,38,39,39

产生
38=3

39=2

将代码作为文本而不是图像发布在问题中呈现相关代码。此外,请将其呈现为文本,而不是图像。不,我们不会查看外部服务器上的图像。请先使用
.equals
而不是
=
。是否要跳过
i==0
?@criket\u 007是的,我希望将第一项放入HashMap中。然后我跳过它,因为我不想数到两次。可以使用
for(项目键:original)
这里当然,我使用了作者的原始代码,只更改了主要部分,谢谢