don*_*nea 0 java sorting inner-classes comparator
鉴于 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
Run Code Online (Sandbox Code Playgroud)
我想按外部和内部字段对它们进行排序。现在,给定 a List<OuterClass> list,我可以轻松地对其进行排序,例如field01:
Collections.sort(list, Comparator.comparing(OuterClass::getField01));
Run Code Online (Sandbox Code Playgroud)
但我可以按哪种方式排序InnerClass.innerfield.innerfield01呢?我试过
Collections.sort(list, Comparator.comparing(OuterClass::InnerField::innerField01));
Run Code Online (Sandbox Code Playgroud)
以及其他一些方法,但都没有成功。也许我应该以某种方式使用OuterClass::new,但我不知道如何使用。
您可以像这样使用Comparator.comparing(Function, Comparator) :
Collections.sort(list,
Comparator.comparing(OuterClass::getInnerField,
Comparator.comparingInt(InnerClass::getInnerField01)));
Run Code Online (Sandbox Code Playgroud)
第一个参数是用于提取要排序的键的函数。在你的情况下:Innerfield来自OuterClass.
第二个参数是用于比较排序键的比较器。在您的情况下: a代表(在上例中)Comparator的字段之一。InnerFieldinnerField01
| 归档时间: |
|
| 查看次数: |
2476 次 |
| 最近记录: |