计算Arraylist中字符串的出现次数

时间:2014-02-07 07:02:04

标签: java arraylist

我们假设我有以下列表。

List<String> list=new ArrayList<String>();
list.add("sultan");
list.add("Masum");
list.add("sultan");
list.add("Sorry");
list.add("sultan");
list.add("Masum");
list.add("sultan");
list.add("Tarek");
list.add("sultan");

我想知道Arraylist中每个字符串的出现次数。我怎样才能做到这一点 ?我还想知道最高时间Arraylist中出现的字符串。对于这个特例,答案是“苏丹”。

3 个答案:

答案 0 :(得分:3)

可能会有所帮助

int occ = Collections.frequency(list, "Masum");

答案 1 :(得分:2)

如果你想要第一个列表中的所有字符串,你可以做的是:

import java.util.*;

import java.util.Map.Entry;
//...

Set<String> uniques = new HashSet(list);
Map<String, Integer> counts = new HashMap<String, Integer>();

for (String elem : uniques) {
    counts.put(elem, Collections.frequency(list, elem));
}

因此,最后您将获得地图中每个字符串的计数。一对一......这将做到以下几点:

  • 通过从初始列表创建集合,您将获得列表中的每个字符串,然后您“遍历”列表并计算任何给定字符串的每个频率。

对于最高频率,您可以在条目集上使用Collections.max方法,如下所示:

Collections.max(counts.entrySet(), new Comparator<Entry<String, Integer>>() {
        @Override
        public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
            return (o1.getValue() - o2.getValue());
        }
    })

答案 2 :(得分:1)

检查

Collections.frequencyTHIS EXAMPLE

来自这个例子:

System.out.println("\nExample 1 - Count 'a' with frequency");
System.out.println("a : " + Collections.frequency(list, "a"));

System.out.println("\nExample 2 - Count all with frequency");
Set<String> uniqueSet = new HashSet<String>(list);
for (String temp : uniqueSet) {
    System.out.println(temp + ": " + Collections.frequency(list, temp));
}

System.out.println("\nExample 3 - Count all with Map");
Map<String, Integer> map = new HashMap<String, Integer>();

for (String temp : list) {
    Integer count = map.get(temp);
    map.put(temp, (count == null) ? 1 : count + 1);
}
printMap(map);

System.out.println("\nSorted Map");
Map<String, Integer> treeMap = new TreeMap<String, Integer>(map);
printMap(treeMap);