2011-06-02 36 views
1

我創建的HashMap像使用問題比較接口

ArrayList<HashMap<?,?>> var = new ArrayList<HashMap<?,?>>(); 

我的包含HashMap的ArrayList一個排序包含字符串值「名」與主要「名」。什麼我想通過名稱,以便可以進行排序的ArrayList我用比較器來做這個嗎? 請幫幫我。

回答

3
 ArrayList<HashMap<String,String>> var = new ArrayList<HashMap<String,String>>(); 
    Collections.sort(var, new Comparator(){ 

     public int compare(Object o1, Object o2) 
     { 
      Map map1 = (Map) o1; 
      Map map2 = (Map)o2; 
      String name1 = (String) map1.get("name"); 
      String name2 = (String) map2.get("name"); 
      if(name1 != null){ 
      return name1.compareTo(name2); 
      } else if(name2 != null){ 
      return name2.compareTo(name1); 
      }else{ 
      return 0; 
      } 
     } 
    }); 

這是答案。

+1

使用Map(而不是Map ) - 不使用泛型不推薦使用。也請注意map1.get(「name」)沒有空值檢查。但除此之外 - 這將做到這一點。 – amit 2011-06-02 06:36:36

+0

我寫的只是一個模板。 – 2011-06-02 06:46:21

+0

哦,我只是意識到我們可以做到這一點。 :) – Rudy 2011-06-02 06:47:16

1

你可以嘗試這樣的事情。

public int compare(Object o1, Object o2) { 
    String one = (String)((HashMap)o1).get("name"); 
    String two = (String)((HashMap)o2).get("name"); 
    return one.compareTo(two); 
} 

我還沒有編譯這個,所以一定要檢查它的正確性。 =)