java - 如何根据嵌套对象属性对列表进行排序
问题描述
我是 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; }
同样的方式二传手。
解决方案
删除map
. 更改流中的map
对象。将排序语句更新为
.sorted(Comparator.comparing(f -> f.getSelect().getFoosKey()))
推荐阅读
- r - 如何根据特定日期列排名正确总结行?
- r - 将两个不同数据框中的 2 列相乘,用公因子匹配行
- rust - 自动格式化 Vec
或 [u8; N] 作为十六进制字符串 - python - Top2Vec 预训练嵌入模型不起作用
- html - 如何让我的 html 网站显示我所在的页面路径?
- asp.net-mvc - 如何在 C# 中将 Base64 字符串转换为文件(Docs)并将其保存在服务器中?
- javascript - 从控制器(Laravel)返回结果,但不受 jquery 代码的影响
- javascript - 将 isSubMatrixFull 函数从 Python 转换为 JS
- gpu - 在 slurm 作业脚本中设置 GPU 计算能力的约束
- excel - 从文本字符串中提取可变长度的数量