【发布时间】:2020-07-23 08:24:12
【问题描述】:
我要输入int[],内容如下:
[5, 65, 22, 1, 58, 5, 69, 12, 1, 22, 22, 58, 12, 54, 89]
使用Map<Object, AtomicInteger>,我将其转换为以下对象:
{1=2, 65=1, 5=2, 69=1, 22=3, 58=2, 12=1}
换句话说,我正在计算动态数组的重复元素。
现在我需要找出最大和最小出现次数,但我真的被困在进一步的步骤上。
重复元素类的代码如下:
public Map<Object, AtomicInteger> countRepeatingElements(int[] inputArray) {
ConcurrentMap<Object, AtomicInteger> output =
new ConcurrentHashMap<Object, AtomicInteger>();
for (Object i : inputArray) {
output.putIfAbsent(i, new AtomicInteger(0));
output.get(i).incrementAndGet();
}
return output;
}
【问题讨论】:
-
两侧cmets:1.我很好奇为什么
Map<Object, AtomicInteger>而不是Map<Integer, AtomicInteger>2.除非同时使用此方法的结果,否则您仍然可以使用HashMap<Object, Integer>(您可以使用output.compute来增加/增加)
标签: java java-8 mapping atomic atomicinteger