以下是我的要求:我必须计算列表中特定项目的出现次数,然后打印该项目及其出现次数。为此,我有以下代码:
public void countOccurrences(Collection<String> list){
Map<String, Integer> occurrenceMap = new HashMap<String, Integer>();
for(String obj: list){
Integer numOccurrence = occurrenceMap.get(obj);
if(numOccurrence == null){
//first count
occurrenceMap.put(obj, 1);
} else{
occurrenceMap.put(obj, numOccurrence++);
}
}
for (Map.Entry<String, Integer> entry : occurrenceMap.entrySet()) {
System.out.println(entry.getKey()+" : "+entry.getValue());
}
}
现在举例来说,添加到我列表中的项目如下:
list.add("apple");
list.add("apple");
list.add("apple");
list.add("banana");
list.add("banana");
list.add("mango");
我期望的输出是
apple:3
banana:2
mango:1
然而,即将到来的输出是
apple:1
banana:1
mango:1
我在这里错过了什么?
最佳答案
你需要改变你的else部分的逻辑
occurrenceMap.put(obj, ++numOccurrence);
因为post增量
numOccurrence ++
返回 numOccurrence
的值,然后将 numOccurrence
的值递增 1。因此您没有将最新的放在 map 中。
关于java - 如何在java中获取Map中重复键的最新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33232805/