加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:02:06 所属栏目:Java 来源:网络整理
导读:舱位声明: class Entity { String name; SubEntity subEntity; // subEntity has a method getAmount() which returns int} 我理解Java 8我们可以这样排序: entities.sort(Comparator.comparing(Entity::name)); 但有没有办法可以对子实体的属性进行排序,
舱位声明:
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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读