• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • Java面向對象
    Java異常
    Java數組
    Java常用類
    Java集合
    Java IO流
    Java線程
    Java反射
    Socket編程
    Java注解開發
    Java GoF設計模式
    HashMap
    Java內存模型
    Java線性表

    Java TreeMap排序

     

     

    TreeMap實現了SortedMap接口, 根據鍵自然排序, 要求鍵必須是可比較的,要么指定Comparator比較器,如果沒有Comparator比較器, 鍵要實現Comparable接口。

     

    package com.wkcto.chapter05.map;
    
    import java.util.Comparator;
    import java.util.TreeMap;
    
    /**
     * TreeMap
     * @author 蛙課網
     *
     */
    public class Test09 {
    
    	public static void main(String[] args) {
    		//1)創建TreeMap, 在構造方法中指定Comparator比較器
    		TreeMap<String, Integer> treeMap = new TreeMap<>(new Comparator<String>() {
    			
    			@Override
    			public int compare(String o1, String o2) {
    				return o2.compareTo(o1); 		//按字符串降序
    			}
    		});
    		
    		treeMap.put("feifei", 28);
    		treeMap.put("zhang", 36);
    		treeMap.put("yong", 35);
    		treeMap.put("bin", 34);
    		
    		//輸出結果, 根據鍵降序排序
    		System.out.println( treeMap );
    		//{zhang=36, yong=35, feifei=28, bin=34}
    		
    		
    		//2) 創建TreeMap, 沒有指定Comparator比較器, 要求鍵實現Comparable接口
    		TreeMap<String, Integer> treeMap22 = new TreeMap<>();
    		treeMap22.putAll(treeMap);
    		System.out.println( treeMap22 );
    		//{bin=34, feifei=28, yong=35, zhang=36}
    		
    	}
    
    }
    

     

    package com.wkcto.chapter05.map;
    
    import java.util.Comparator;
    import java.util.TreeMap;
    
    /**
     * TreeMap中的鍵必須是可比較的
     * 		要么指定Comparator比較器,要么實現Comparable接口
     * 注意:
     * 	在TreeMap中判斷鍵是否存在,根據Comparator/Comparable的比較結果是否為0進行判斷的,如果為0就認為是相同的鍵
     * 
     * @author 蛙課網
     *
     */
    public class Test10 {
    
    	public static void main(String[] args) {
    		//創建TreeMap, 存儲<Person, String> 表示員工與部門
    		//指定Comparator比較器 , 根據年齡升序
    		TreeMap<Person, String> treeMap = new TreeMap<>(new Comparator<Person>() {
    			@Override
    			public int compare(Person o1, Person o2) {
    				return o1.age - o2.age;
    			}
    		});
    		
    		treeMap.put(new Person("feifei", 28), "教學部");
    		treeMap.put(new Person("xixi", 22), "教務部");
    		treeMap.put(new Person("hong", 26), "市場部");
    		treeMap.put(new Person("yun", 24), "市場部");		
    		System.out.println( treeMap );
    		//{ [name=xixi, age=22]=教務部,  [name=yun, age=24]=市場部,  [name=hong, age=26]=市場部,  [name=feifei, age=28]=教學部}
    
    		//因為Comparator比較器根據年齡比較大小, 新添加的Person鍵如果與Map中現在的鍵年齡相同 就認為是同一個鍵
    		treeMap.put(new Person("mengmeng", 22), "行政");
    		System.out.println( treeMap );
    		//binbin的年齡與feifei年齡相同, 就認為是同一個鍵
    		System.out.println( treeMap.containsKey(new Person("binbin", 28)));   //true
    		
    		System.out.println("--------------------------------");
    		TreeMap<Person, String>  treeMap2 = new TreeMap<>(treeMap);
    		System.out.println( treeMap2 );
    		
    		TreeMap<Person, String> treeMap3 = new TreeMap<>();
    		treeMap3.putAll(treeMap);
    		System.out.println( treeMap3 );
    		//{ [name=feifei, age=28]=教學部,  [name=hong, age=26]=市場部,  [name=xixi, age=22]=教務部,  [name=yun, age=24]=市場部}
    
    	}
    
    }

     

    TreeMap可以根據鍵自然排序,排序的原理是二叉樹原理

     

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏