2016-12-29 32 views
1

我试图获得重复值为String ArrayList的计数,我已经完成了任务但并未完成。我能够得到我的arrayList重复elementscounts,但问题是,arrayListorder破坏时,我得到的elements在Java中arrayList中获取重复值的计数,而不会影响arrayList的顺序

这里的occurrences是我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也不应该被销毁。

+0

如果你使用的是java 8,你的if-else语句可以简化为'counts.merge(str,1,Integer :: sum);'。 –

回答

1

使用LinkedHashMap代替HashMap保留插入顺序

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

+0

谢谢!!你救了我的一天!它工作得很好 –