天天看點

Java8 stream流多字段排序List按一個類屬性排序List 按兩個類屬性排序

List按一個類屬性排序

List<類> list; 代表某集合

1 傳回 對象集合以類屬性升序排序

2 傳回 對象集合以類屬性降序排序 注意兩種寫法

//先以屬性一升序,結果進行屬性一降序
list.stream().sorted(Comparator.comparing(類::屬性一).reversed());
//以屬性一降序
list.stream().sorted(Comparator.comparing(類::屬性一,Comparator.reverseOrder()));
           

List 按兩個類屬性排序

1 傳回 對象集合以類屬性一升序 屬性二升序

2 傳回 對象集合以類屬性一降序 屬性二升序 注意兩種寫法

//先以屬性一升序,升序結果進行屬性一降序,再進行屬性二升序
list.stream().sorted(Comparator.comparing(類::屬性一).reversed().thenComparing(類::屬性二));
 //先以屬性一降序,再進行屬性二升序
list.stream().sorted(Comparator.comparing(類::屬性一,Comparator.reverseOrder()).thenComparing(類::屬性二));
           

3 傳回 對象集合以類屬性一降序 屬性二降序 注意兩種寫法

//先以屬性一升序,升序結果進行屬性一降序,再進行屬性二降序
list.stream().sorted(Comparator.comparing(類::屬性一).reversed().thenComparing(類::屬性二,Comparator.reverseOrder()));
 //先以屬性一降序,再進行屬性二降序
list.stream().sorted(Comparator.comparing(類::屬性一,Comparator.reverseOrder()).thenComparing(類::屬性二,Comparator.reverseOrder()));
           

4 傳回 對象集合以類屬性一升序 屬性二降序 注意兩種寫法

//先以屬性一升序,升序結果進行屬性一降序,再進行屬性二升序,結果進行屬性二降序
list.stream().sorted(Comparator.comparing(類::屬性一).reversed().thenComparing(類::屬性二).reversed());
 //先以屬性一升序,再進行屬性二降序
list.stream().sorted(Comparator.comparing(類::屬性一).thenComparing(類::屬性二,Comparator.reverseOrder()));