我有对象的列表objList其中有两个字段age和id.age是long和id是String.我想迭代列表并获取列表中具有最小年龄的对象的id.我可以用传统的for循环来做,但我相信在Java 8中会有一个紧凑的解决方案.
如果我这样做objList.stream(),然后检查该流的地图功能,我只是有mapToInt,mapToLong和mapToDouble.有了这些,我得到了最小年龄,但我需要具有最小年龄的物体的id.
它保证列表不会为空并且至少有一个对象.
假设在列表中的元素类型MyObject,并提供存取getAge()和getId(),管道应该是这样的:
String id = objList.stream()
.min(Comparator.comparingLong(MyObject::getAge))
.map(MyObject::getId)
.orElseThrow(IllegalArgumentException::new);
Run Code Online (Sandbox Code Playgroud)
如果你的假设是无效的,并且objList 是空的,那么这将抛出IllegalArgumentException- 但这将"永远不会发生",对吧?或者,您可以返回默认值或生成默认值.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |