有什么方法可以计算数组中每个项目的出现?
可以说我有:
String[] array = {"name1","name2","name3","name4", "name5"};
这里的输出将是:
name1 1 name2 1 name3 1 name4 1 name5 1
如果我有:
String[] array = {"name1","name1","name2","name2", "name2"};
输出为:
name1 2 name2 3
这里的输出只是为了展示预期的结果。
你可以使用MultiSet来自Google Collections / Guava的或Bag来自Apache Commons的。
MultiSet
Bag
如果你有一个集合而不是一个数组,则可以用于addAll()将整个内容添加到上述数据结构中,然后将该count()方法应用于每个值。一个SortedMultiSet或SortedBag会给你以定义的顺序的项目。
count()
SortedMultiSet
SortedBag
Google Collections实际上具有从数组转换为的非常方便的方法SortedMultiset。
SortedMultiset
List asList = Arrays.asList(array); Set<String> mySet = new HashSet<String>(asList); for(String s: mySet){ System.out.println(s + " " +Collections.frequency(asList,s)); }