1. 程式人生 > >java中TreeMap自定義排序以及一個鍵對應多個值問題

java中TreeMap自定義排序以及一個鍵對應多個值問題

在最近寫的一個工程裡用到了TreeMap這個資料結構,TreeMap是SortedMap介面基於紅黑樹的實現,該類保證了對映按照升序排列關鍵字,根據使用的構造方法不同,可能會按照鍵的類的自然順序進行排序,或者按照建立時所提供的比較器進行排序。插入該對映的所有鍵必須是可以相互比較的(實現Comparable介面),否則將丟擲ClassCastException!

比如我建立一個TreeMap<Double,String>的結構要按照Double的降序排序(注意,預設的是按照升序排序的!)則可以這樣寫:
TreeMap<Double,String> rf = new TreeMap<Double,String>(new Comparator(){

   @Override
   public int compare(Object o1, Object o2) {
    // TODO Auto-generated method stub
    Double a = (Double)o1;
    Double b = (Double)o2;
    return -a.compareTo(b);
   }});


如果想要一個鍵對應多個值則可以用一個list來儲存value如: TreeMap<Double,ArrayList<Integer>> rf = new TreeMap<Double,ArrayList<Integer>>(); 向該TreeMap中放入資料<key,value>:
ArrayList<Integer> list = (ArrayList<Integer>) rf.get(key);//根據key得到存放value 的list
if(list == null)
list = new ArrayList<Integer>();
list.add(value);
rf.put(key,list);


如此便可以實現在TreeMap中一個key對應著多個value~~