初始的List<Map>
[{aaa=10, bbb=2,ccc=6},
{aaa=6,bbb=2, ccc=1},
{aaa=8,bbb=3, ccc=5},
{aaa=10,bbb=4, ccc=4},
{aaa=10,bbb=2, ccc=3}]
現在需求是先按照aaa的大小,從大到小排序,如果aaa的值相同,則按照bbb的從大到小排序,如果bbb值相同,則按照ccc從大到小排序
例如排序后變成
[{aaa=10,bbb=4, ccc=4},
{aaa=10, bbb=2,ccc=6},
{aaa=10,bbb=2, ccc=3}
{aaa=8,bbb=3, ccc=5},
{aaa=6,bbb=2, ccc=1},]
來個大神吧!
uj5u.com熱心網友回復:
這是個死代碼
list.sort(new Comparator<LinkedHashMap<String,Integer>>() {
@Override
public int compare(LinkedHashMap<String, Integer> o1, LinkedHashMap<String, Integer> o2) {
if(o2.get("aaa")-o1.get("aaa")>0) {
return 1;
}else if(o2.get("aaa")-o1.get("aaa")<0) {
return -1;
} else {
if(o2.get("bbb")-o1.get("bbb")>0) {
return 1;
}else if(o2.get("bbb")-o1.get("bbb")<0) {
return -1;
} else {
if(o2.get("ccc")-o1.get("ccc")>0) {
return 1;
}else if(o2.get("ccc")-o1.get("ccc")<0) {
return -1;
} else {
return 0;
}
}
}
}
});
uj5u.com熱心網友回復:
String json = "[{aaa:10, bbb:2,ccc:6}, \n" +
" {aaa:6,bbb:2, ccc:1},\n" +
" {aaa:8,bbb:3, ccc:5}, \n" +
" {aaa:10,bbb:4, ccc:4},\n" +
" {aaa:10,bbb:2, ccc:3}]";
List<HashMap> list = JSON.parseArray(json, HashMap.class);
List<HashMap> collect = list.stream()
.sorted(Comparator
.comparing(o -> Integer.valueOf(String.valueOf(((Map) o).get("aaa"))), Comparator.reverseOrder())
.thenComparing(o -> Integer.valueOf(String.valueOf(((Map) o).get("bbb"))), Comparator.reverseOrder())
.thenComparing(o -> Integer.valueOf(String.valueOf(((Map) o).get("ccc"))), Comparator.reverseOrder())
)
.collect(Collectors.toList());Comparator
.comparing()
.thenComparing()
.thenComparing()
uj5u.com熱心網友回復:
重寫Comparator類轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20862.html
標籤:Java EE
