java - 将 <Object, AtomicInteger> 映射到关联数组

标签 java java-8 mapping atomic atomicinteger

我有输入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;
}

最佳答案

如果要查找最大和最小出现次数,请使用 EntrySet 迭代 Map 并比较每个键的值。

int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for(Map.Entry<Object, AtomicInteger> entry : output.entrySet()){
    if(entry.getValue().intValue() < min){
        min = entry.getValue().intValue();
    }
    if(entry.getValue().intValue() > max){
        max = entry.getValue().intValue();
    }
// entry.getValue() gives you number of times number occurs
// entry.getKey() gives you the number itself
}

关于java - 将 <Object, AtomicInteger> 映射到关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61142793/

相关文章:

java - [Android]如何在Android中加载swf文件(API 23)

java - 如何将对象压缩为字符串而不丢失太多信息

java - 格式化程序和不带年份的本地化 LocalDate (JSR-310)

java - 在 List 中转换/分组值

java - 从 SynchronizedMultimap 中删除元素会增加意外行为

nhibernate - FluentNHibernate 和枚举

entity-framework - 将EF核心约定和DBFunction混合用于JObject属性

java - Jersey:打印实际请求

java - Collectors.joining (",") 是线程安全的吗?

c# - 如何将嵌套对象从一种类型转换为另一种类型