考虑到 Java 类的这种组合:
public class OuterClass
{
public String field01;
public int field02;
public InnerClass innerField
// ...getters, setters
public class InnerClass
{
public int innerField01;
public BigDecimal innerField02;
// ...getters, setters
我想按外部和内部字段对它们进行排序。现在,给定 List<OuterClass> list
,我可以轻松地对其进行排序,例如 field01
与:
Collections.sort(list, Comparator.comparing(OuterClass::getField01));
但是我可以按 InnerClass.innerfield.innerfield01
排序吗? ?我试过了
Collections.sort(list, Comparator.comparing(OuterClass::InnerField::innerField01));
还有其他一些方法,但没有成功。
也许我应该以某种方式使用 OuterClass::new
,但我不知道如何。
最佳答案
您可以使用Comparator.comparing(Function, Comparator)像这样:
Collections.sort(list,
Comparator.comparing(OuterClass::getInnerField,
Comparator.comparingInt(InnerClass::getInnerField01)));
第一个参数是用于提取要排序的键的函数。在您的情况下:来自 OuterClass
的 Innerfield
。
第二个参数是用于比较排序键的比较器。在您的情况下:InnerField
字段之一的 Comparator
(上例中的 innerField01
)。
关于使用比较器和内部类进行 Java 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51686468/