2013-03-26 132 views
1

我有maps列表,我已经由一个类型排序,但现在我想进一步排序,列出进一步梳理已排序列表

原始排序

Collections.sort(list, new Comparator<Map<String,Object>>(){ 

    @Override 
    public int compare(Map<String, Object> m1,Map<String, Object> m2) { 

     return m1.get("type").toString().compareTo(m2.get("type").toString()); //type is a 1 or 0 
    }   
}); 

现在我想做的是保持这个顺序,但我想进一步排序人姓氏的名单。我将不得不把它分成两个列表,一个是0类型的列表,另一个是1类型的列表,然后把这些列表加在一起?

基本上我想复制SQL排序,我会做type ASC, lastName ASC并给我一个按类型排序的列表,按照姓氏排序的类型。

回答

4

你可以这样做:

int compareType = m1.get("type").toString().compareTo(m2.get("type").toString()); 
if(compareType != 0) { 
    return compareType; 
} 
return m1.get("name").toString().compareTo(m2.get("name").toString()); 

如果你在很多关键点排序,这将是清洁:

for(String key : new String[] { "type", "name" }) { 
    int compare = m1.get(key).toString().compareTo(m2.get(key).toString()); 
    if(compare != 0) { 
     return compare; 
    } 
} 
return 0;