获取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
的重复elements
的counts
,但问题是当我得到elements
的occurrences
时,arrayList
的order
会破坏。
这是我的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的顺序[重复]的主要内容,如果未能解决你的问题,请参考以下文章