TreeMap按照value进行排序

1、TreeMap默认顺序是按照map的key来顺序排序的。
2、自定义顺序:需要把treeMap转换成List,通过重写Comparator方法去重新定义顺序。


public class MyTreeMap {
 
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Map<String, Integer> map = new TreeMap<String, Integer>();
		map.put("c", 2);
		map.put("ad", 1);
		map.put("bc", 1);
		map.put("abc", 3);
 
 
		List<Map.Entry<String, Integer>> treeMapList =
		    new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
 
 
		//排序前
		System.out.println("排序前------------------");
		for (int i = 0; i < treeMapList.size(); i++) {
		    String id = treeMapList.get(i).toString();
		    System.out.println(id);
		}
 
 
		//通过key倒序排序
		Collections.sort(treeMapList, new Comparator<Map.Entry<String, Integer>>() {   
		    public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {      
		        return (o2.getKey()).toString().compareTo(o1.getKey());
		    }
		}); 
 
 
		System.out.println("key倒序排列------------------");
		for (int i = 0; i < treeMapList.size(); i++) {
		    String id = treeMapList.get(i).toString();
		    System.out.println(id);
		}
		
		//通过value倒序排序
		Collections.sort(treeMapList, new Comparator<Map.Entry<String, Integer>>() {   
		    public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {      
		        return (o2.getValue() - o1.getValue()); 
		    }
		}); 
 
 
		System.out.println("value倒序排列------------------");
		for (int i = 0; i < treeMapList.size(); i++) {
		    String id = treeMapList.get(i).toString();
		    System.out.println(id);
		}
 
 
	}

结果

排序前------------------
abc=3
ad=1
bc=1
c=2
key倒序排列------------------
c=2
bc=1
ad=1
abc=3
value倒序排列------------------
abc=3
c=2
bc=1
ad=1

猜你喜欢

转载自blog.csdn.net/qq_43206800/article/details/108337274