gpt4 book ai didi

java - Comparator#comparing 按类属性的属性排序

转载 作者:行者123 更新时间:2023-11-29 06:50:02 33 4
gpt4 key购买 nike

假设我有一个类 ClassA,它的属性是 ClassB:

public ClassA
{
private String attr;
private ClassB classB;
}

public ClassB
{
private String attr1;
private int attr2;
}

从上面的类中,是否可以对ClassA List<ClassA> list的列表进行排序?按 ClassB 的属性使用 Comparator ?可以通过代码 Comparator.comparing(ClassA::getAttr) 轻松按 ClassA 属性排序,但是如果我想按 ClassB 中的属性对列表进行排序怎么办? ,假设 attr2属性?

最佳答案

你可以这样做,

List<ClassA> sortedList = list.stream()
.sorted(Comparator.comparing(a -> a.getClassB().getAttr2()))
.collect(Collectors.toList());

将比较 Function 传递给 Comparator 它将创建一个新的 stream 根据给定的 Comparator 排序>。然后将其收集到一个 List 中。

如果你想处理空值,可以像下面这样完成。

final List<ClassA> sortedList = list.stream()
.sorted(Comparator.nullsFirst(
Comparator.comparing(a -> a.getClassB().getAttr1(), Comparator.nullsLast(String::compareTo))))
.collect(Collectors.toList());

关于java - Comparator#comparing 按类属性的属性排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51434292/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com