今天在开发中遇到两个问题,我觉得挺有意思的所以记录一下。
- 对list进行二次排序。
- 处理list里的空值。
解决方案
- 主要使用
thenComparing
进行二次排序 - 主要使用
Comparator.nullsFirst(Comparator.naturalOrder())
进行空值处理
public class BookTest {
private List<Book> list = new ArrayList<Book>();
@Before
public void init() {
list.add(1, "语文");
list.add(1, "数学");
list.add(1, "英语");
list.add(1, "美术");
list.add(1, "体育");
list.add(1, "地理");
list.add(1, "化学");
}
@Test
public void TestCase() {
// 常用排序
list.stream().sorted(Comparator.comparing(Book::getName));
// 复杂排序
list.stream().sorted(Comparator.comparing(Book::getName, Comparator.nullsFirst(Comparator.naturalOrder())) // 处理空值
.thenComparing(op -> op.getId())) // 二次排序
.collect(Collectors.toList());
// 打印
list.forEach(e -> System.out.println(e.getId() + "," + e.getName()));
}
}