【发布时间】:2017-04-07 15:12:12
【问题描述】:
我有一串名字
String str = "A. Walker, L. Gordon, C. Riley, L. Gordon";
我需要统计出现次数并将出现次数从大到小排序。
countung 部分我已经完成了,但我还需要对其进行排序。
String[] array = str.split(", ");
List asList = Arrays.asList(array);
Set<String> mySet = new HashSet<String>(asList);
for(String s: mySet)
System.out.println(s + " " +Collections.frequency(asList,s));
输出应该是这样的
L. Gordon 2, A. Walker 1, C. Riley 1
【问题讨论】:
-
使用
LinkedHashSet而不是HashSet来保留插入顺序,并在将asList传递给集合之前对其进行排序。 (注意,使用List<String> asList而不是List asList)。 -
对列表进行排序的一种方法是使用java.util.Collections.sort( List<T> list )。如果需要特殊订单,可以通过 Collections 和 List 中的类似方法提供 Comparator
。 -
请注意,如果您已经对列表进行了排序,则无需将它们放入集合中...
-
如果允许使用外部库,Guava 的
TreeMultiset是完美的 ADT。
标签: java arrays string hashset