获取Java中arrayList中重复值的计数而不影响arrayList的顺序[重复]

Posted

技术标签:

【中文标题】获取Java中arrayList中重复值的计数而不影响arrayList的顺序[重复]【英文标题】:Getting the count of duplicate values in arrayList in Java without affecting the order of arrayList [duplicate] 【发布时间】:2017-05-13 19:30:05 【问题描述】:

我正在尝试获取String ArrayList 的重复值的计数,我已经完成了任务,但还没有完全完成。我能够得到我的arrayList 的重复elementscounts,但问题是当我得到elementsoccurrences 时,arrayListorder 会破坏。

这是我的code

    Map<String, Integer> counts = new HashMap<String, Integer>();

    for (String str : t.courseName) 
        if (counts.containsKey(str)) 
            counts.put(str, counts.get(str) + 1);
         else 
            counts.put(str, 1);
        
    

    for (Map.Entry<String, Integer> entry : counts.entrySet()) 
        System.out.println(entry.getKey() + " = " + entry.getValue());
    

此代码可以正常获取occurrences,但请注意此代码会破坏order。我想要的是order 也不应该被破坏。

【问题讨论】:

如果您使用的是 java 8,您的 if-else 语句可以简化为 counts.merge(str, 1, Integer::sum); 【参考方案1】:

使用LinkedHashMap 而不是HashMap 来保留插入顺序

LinkedHashMap 是哈希表和链表的组合。它具有可预测的迭代顺序(la 链表),但检索速度与 HashMap 相当。迭代的顺序由插入顺序决定,因此您将按照添加到此 Map 的顺序返回键/值。

【讨论】:

谢谢!!你救了我的一天!!效果很好

以上是关于获取Java中arrayList中重复值的计数而不影响arrayList的顺序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

获取用逗号分隔的值的计数[重复]

Django Query以获取特定列的所有不同值的计数[重复]

从arraylist中获取不重复的项目[关闭]

SQL:如何获取计数值的 sum() [重复]

如何在arraylist中查找具有计数和重复值总数的重复值

Java删除ArrayList中的重复对象[重复]