首页 > 解决方案 > 如何根据嵌套对象属性对列表进行排序

问题描述

我是 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<FooSelect>对象,虽然我想要它在List<Foo>.

排序后如何更改映射?

我想再次更改响应

//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; }

同样的方式二传手。

标签: javajava-8java-stream

解决方案


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

.sorted(Comparator.comparing(f -> f.getSelect().getFoosKey()))

推荐阅读