gpt4 book ai didi

java - 使用 Java 8 流时更新现有的 Map 对象

转载 作者:行者123 更新时间:2023-12-01 20:53:50 24 4
gpt4 key购买 nike

在这里,我将两个不同的列表转换为单个 map 。在我使用普通的 for 循环来执行此操作之前。现在由于性能问题我正在使用流。使用流时,如何对两个对象列表使用相同的 mapObject。

final Set<Object1> objects1 = new HashSet<Object1>();
final Set<Object2> objects2 = new HashSet<Object2>();
final Map<Id, Object> objectMap = new HashMap<Id, Object>();


private void addObjectsToMap(Map<Id, Object> objectMap, final Collection<? extends Object> objects)
{
// used this operation earlier to convert
for (final Object object : objects)
{
objectMap.put(object.getId(), object);
}

// using this one now
objectMap = objects.parallelStream().collect(
Collectors.toMap(object -> object.getId(), object -> object));
}

addObjectsToMap(objectMap, objects1);
addObjectsToMap(objectMap, objects2);

最佳答案

您可以使用 Stream 的 concat 将 2 个流连接成单个流。

Map<Integer, Object> objectMap;
objectMap = Stream.concat(objects1.stream(), objects2.stream())
.parallel()
.collect(Collectors.toMap(Object::getId, Function.identity()));

关于java - 使用 Java 8 流时更新现有的 Map 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42694642/

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