我们假设我有以下列表。
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
中出现的字符串。对于这个特例,答案是“苏丹”。
答案 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.frequency和THIS 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);