当前位置: 首页 > 知识库问答 >
问题:

如何根据嵌套对象属性对列表进行排序

曹嘉许
2023-03-14

我是Java流的新手,我只想对我的对象的键进行排序。

所以,我尝试了这样的方法,效果很好

List<FooSelect> li= Arrays.stream(obj.getFoos().getFoo())  //Stream<Foo>
    .map(Foo::getSelect)                                   //Stream<FooSelect>
    .sorted(Comparator.comparing(FooSelect::getFoosKey))   //Stream<FooSelect>
    .collect(Collectors.toList());

这是根据我想要的分类。

但我得到的结果在List

排序后如何更改映射?

我想再次更改中的响应

//Stream<Foo> after it is sorted.

我想要像这样的东西

List<Foo> li = same result of code above;
Class : FooSelect
just has some String fields
string FooKey
string FooTKey

和getter和setter(其中一个是getFoosKey,我根据它排序)

Class: Foo
private FooSelect select
private FooInsert insert

Foo(select, insert)

public FooSelect getSelect() {
return select; }

同样的方式setter。


共有2个答案

晏昀
2023-03-14
匿名用户

可以在比较器中使用lambda表达式。比较,而不是方法参考

List<Foo> res = foos.stream()             
                    .sorted(Comparator.comparing(fo->fo.getSelect().getFooKey()))
                    .collect(Collectors.toList());

仅仅是分类,你甚至不需要流

foos.sort(Comparator.comparing(fo->fo.getSelect().getFooKey()));

邓正真
2023-03-14

删除mapmap更改流中的对象。将排序语句更新为

.sorted(Comparator.comparing(f -> f.getSelect().getFoosKey()))
 类似资料:
  • 我用的是Java 8号。我有一份汽车物品清单。我想按特定的顺序对它们进行排序。 每个汽车对象都属于一个模型。我喜欢按型号对汽车对象列表进行排序。排序后的列表应该是按照以下顺序,有车型的轿车SEDAN,然后是宝马,然后是独角兽。 所以当我打印排序后的列表时,它应该是这样的 如何使用自定义比较器在模型枚举上实现这种排序顺序。 如果你能帮忙,我很感激

  • 问题内容: 我在表中列出了用户列表。 活动用户应在非活动用户上方排序。 我正在尝试使用lodash 函数进行此操作,但未成功。 这里是如何的外观: 这是带有用户数组和sortBy loadsh函数代码的代码笔:https ://codepen.io/nikolatrajkovicq/pen/pGXdpM?editors = 1112 任何地方都欢迎。 问题答案: 您可以这样使用: 您可以只减去中的

  • 我试图排序基于一个nullable ArrayList在java 8列表。 列表如下 我正在尝试使用streams sort根据患者就诊日期(就诊列表中的第一个元素)的降序对患者对象进行排序。空值应该放在最后。最终结果必须是 我尝试过以下方法,但即使在空检查之后,也会出现空指针异常。

  • 我有一个对象列表,我需要按其中一个对象属性对其进行排序。 我可以用下面的代码按升序排序 但是,这是按升序排序列表,而我需要做的是按降序排序。在对对象列表进行排序时,这可能吗?

  • 假设我有一个自定义对象的ArrayList,例如 如何按路径、格式、大小或日期添加对其进行排序? 谢了!

  • 问题内容: 我需要通过对象属性之一的一个属性比较对象数组。 我在做 : 它没有编译,有人知道怎么做吗? 谢谢。 问题答案: 这是代码中导致错误的部分 您可以创建对特定类型的任意对象的(静态或非静态)方法的引用。对任何类型的对象的方法的引用如下所示: 但是方法引用不是对象,并且没有成员可以访问。使用此代码,您尝试访问引用的成员变量(并且不能) 另外,方法引用不是类,因此您不能从它们中获取另一个方法引