List 自定義排序

對list根據自定義方法排序記要


List list = dao.findAllToMap();//得到所有數據,結果封裝成List<Map>
ComparatorArea comparator = new ComparatorArea();
Collections.sort(list, comparator);

/**
* 對區塊自定義排序,順序從高到低如下:
* 塔北
* 庫車
* 塔中
* 塔西
* 塔河
* 盛業
* 新疆
*
*/
private class ComparatorArea implements Comparator{
Map<String,Integer> sortValue = new HashMap<String,Integer>();

public ComparatorArea(){
initSort();
}
public int compare(Object p1, Object p2) {
Object o1 = ((Map)p1).get("ITEM_AREA_NAME");
Object o2 = ((Map)p2).get("ITEM_AREA_NAME");
String key1 = o1 != null ? o1.toString() : "";
String key2 = o2 != null ? o2.toString() : "";
if(StringUtils.isEmpty(key1) && StringUtils.isEmpty(key2)){
return 0;//都爲null或空串,相等
}else if(key1.equals(key2)){
return 0;
}else if(StringUtils.isEmpty(key1) && !StringUtils.isEmpty(key2)){
return 1;//null或空串越向後靠
}else if(!StringUtils.isEmpty(key1) && StringUtils.isEmpty(key2)){
return -1;//null或空串越向後靠
}else if(sortValue.get(key1) > sortValue.get(key2)){
return 1;
}else{
return -1;
}
}

//排序順序,value越大,排序越靠前
private void initSort(){
sortValue.put("新疆", 7);
sortValue.put("盛業", 6);
sortValue.put("塔河", 5);
sortValue.put("塔西", 4);
sortValue.put("塔中", 3);
sortValue.put("庫車", 2);
sortValue.put("塔北", 1);
}
}


如果排序對象是個實體類,實體類則直接實現Comparator接口,實現compare方法即可;實現Comparator接口時,可以使用泛型,如implements Comparator<User>;compare(User p1, User p2)
.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章