[英]Count occurence of string in 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
中的字符串。 对于此特定示例,答案是“苏丹”。
可能会有帮助
int occ = Collections.frequency(list, "Masum");
如果希望所有字符串都位于第一个列表中,则可以执行以下操作:
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());
}
})
检查一下
从这个例子:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.