我是 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; }
同样的设置方法。
最佳答案
您可以在Comparator.comparing
中使用lambda表达式来代替方法引用
List<Foo> res = foos.stream()
.sorted(Comparator.comparing(fo->fo.getSelect().getFooKey()))
.collect(Collectors.toList());
如果只是排序,你甚至不需要流
foos.sort(Comparator.comparing(fo->fo.getSelect().getFooKey()));
关于java - 如何根据嵌套对象属性对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58222952/