gpt4 book ai didi

Java Streams 将列表拆分为子列表,单独处理这些列表并将它们合并回来

转载 作者:行者123 更新时间:2023-12-01 08:52:07 24 4
gpt4 key购买 nike

我有一个用例,其中需要根据 locationName 处理包含“Location”对象的列表。我用 Java 8 流尝试过这个,

private List<Payment> filterLocationsByName(List<Location> locationList) {
return locationList.stream().filter(l -> l.getLocationName()
.equalsIgnoreCase("some_location_name"))
.collect(Collectors.toList());
}

List<Location> originalLocationList = .....
List<Location> someLocations = filterLocationsByName(originalLocationList);

//logic to process someLocations list

// do the same for another locationName

//at the end need to return the originalList with the changes made

我的问题是 someLocations 列表不受原始列表的支持。我对 someLocations 元素所做的更改不会填充到原始列表中。如何将此 someLocations 列表合并回原始列表,以便处理后的更改对原始列表生效?

最佳答案

流主要用于不可变处理,因此您通常不会更改原始流源(集合)。您可以尝试使用 forEach 但您需要自己删除。

另一个选择是使用 removeIf来自 Collection 接口(interface)(您只需否定条件):

locationList.removeIf(
l -> !l.getLocationName().equalsIgnoreCase("some_location_name")
);

这将更改列表。

关于Java Streams 将列表拆分为子列表,单独处理这些列表并将它们合并回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42323502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com