前段时间在考虑关于list中重复项计数的问题,在网上找demo,找到了CSDN中“小李博客”,他的关于计算Java List中的重复项出现次数【转】的程序还是不错的,致敬,可是他的程序没有涉及到泛型,而我的程序需要泛型,就做了些修改,留作以后的笔记嘿嘿。假定添加进list的元素类型是String,统计出现次数是Ingter型
package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
public class test04 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("Selector");
list.add("Selector");
list.add("color");
System.out.println("\n例子1 - 计算'Selector'和'color'出现的次数");
System.out.println("color : " + Collections.frequency(list, "color"));
System.out.println("Selector : "
+ Collections.frequency(list, "Selector"));
System.out.println("\n例子2 - 计算所有对象出现的次数");
Set<String> uniqueSet = new HashSet<String>(list);
for (String temp : uniqueSet) {
System.out.println(temp + ": " + Collections.frequency(list, temp));
}
System.out.println("\n例子3 -用Map来计算对象出现的次数");
Map map = new HashMap();
for (String temp : list) {
Integer count = (Integer) map.get(temp);
map.put(temp, (count == null) ? 1 : count + 1);
}
printMap(map);
System.out.println("\nMap排序-以key排序");
Map<String, Integer> treeMap = new TreeMap<>(map);
printMap(treeMap);
}
public static void printMap(Map map) {
Set<Entry<String, Integer>> entries=map.entrySet();
for (Map.Entry entry : entries) {
System.out.println("Key-value : " + entry.getKey() + "- "
+ entry.getValue());
}
}
}
}