drd*_*z13 2 java loops nested java-8 java-stream
我是java 8的新手,出于某种原因我对了解流有问题.假设我们有一个对象列表List <MyObject>,其中MyObject有2个字段:Long Id,Date insertTime,我想删除具有相同ID和更早时间的元素.
有2个for循环,它是这样的:
for(MyObject object : myObjects) {
for(MyObject tmpObject : myObjects) {
if(object.getId() == tmpObject.getId()) {
if(object.getInsertDate().after(tmpObject.getInsertDate()))
myObjects.remove(tmpObject);
else
myObjects.remove(object);
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用流时看起来如何?
@Michael我的坏.比我需要另一个列表或数组来存储响应数据.
让我说我有
所以我需要的结果
谢谢你们.
按ID分组然后为每个id选择具有最大插入日期的id.您可以使用MyObject替换Sample.
Map<Long, List<Sample>> map = list.stream().collect(Collectors.groupingBy(Sample::getId));
map.values().stream()
.map(samples -> Collections.max(
samples, Comparator.comparing(Sample::getInsertDate)))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
976 次 |
| 最近记录: |