Java 8对Class成员的属性进行排序

前端之家收集整理的这篇文章主要介绍了Java 8对Class成员的属性进行排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
舱位声明:
class Entity {
    String name;
    SubEntity subEntity; // subEntity has a method getAmount() which returns int
}

我理解Java 8我们可以这样排序:

entities.sort(Comparator.comparing(Entity::name));

但有没有办法可以对子实体的属性进行排序,例如:

entities.sort(Comparator.comparing(Entity::SubEntity::getAmount()));

P.S:全部用于任何单线.

解决方法

伙计们给了你很好的答案.它不应该是对他们答案的改进.我只想提供另一种想法.
entities.sort(Comparator.comparing(((Function<Entity,SubEntity>)Entity::getSubEntity).andThen(SubEntity::getAmount)));

我通过将两个函数Entity :: getSubEntity和SubEntity :: getAmount与Function#andThen组合来形成一个密钥提取器.两者都被编写为方法引用.需要强制转换来确定实例的类型,并在该实例上调用andThen.

原文链接:https://www.f2er.com/java/126948.html

猜你在找的Java相关文章