標籤:
package cn.php;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.HashSet;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;public class CountList {public static void main(String[] args) {List<String> strs = Arrays.asList("a", "b", "c", "d", "e", "a", "a","a", "a", "b", "b", "b");Map<String, Integer> map = new HashMap<String, Integer>();Set<String> set = new HashSet<String>(strs);for (String str : set) {for (String lstr : strs) {if (str.equals(lstr)) {if (map.containsKey(str)) {Integer count = map.get(str);count++;map.put(str, count);} else {map.put(str, 1);}}}}//printMap(map);Map<String, Integer> sortMap = sortMapByValue(map);printMap(sortMap);}private static Map<String,Integer> sortMapByValue(Map<String, Integer> map) {List<Map.Entry<String, Integer>> mapList = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());Collections.sort(mapList, new Comparator<Map.Entry<String, Integer>>() {@Overridepublic int compare(Entry<String, Integer> o1,Entry<String, Integer> o2) {return o1.getValue()-o2.getValue();}});Map<String,Integer> result = new LinkedHashMap<String,Integer>();for(Map.Entry<String, Integer> entry:mapList){result.put(entry.getKey(), entry.getValue());}return result;}public static void printMap(Map<String, Integer> map) {for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println("Key : " + entry.getKey() + " Value : "+ entry.getValue());}}}
public Map<String, String> sortMapByKey(Map<String, String> oriMap) {if (oriMap == null || oriMap.isEmpty()) {return null;}Map<String, String> sortedMap = new TreeMap<String, String>(new Comparator<String>() {public int compare(String key1, String key2) {int intKey1 = 0, intKey2 = 0;try {intKey1 = getInt(key1);intKey2 = getInt(key2);} catch (Exception e) {intKey1 = 0;intKey2 = 0;}return intKey1 - intKey2;}});sortedMap.putAll(oriMap);return sortedMap;}private int getInt(String str) {int i = 0;try {Pattern p = Pattern.compile("^\\d+");Matcher m = p.matcher(str);if (m.find()) {i = Integer.valueOf(m.group());}} catch (NumberFormatException e) {e.printStackTrace();}return i;}
java統計List中的元素重複出現的次數和對map按key或索引值排序