我正在尝试实现将通过 id 从存储接收到的对象添加到列表中,而不是通过循环,但在流的帮助下,到目前为止它不是很成功。
Storage storage;
Set<Long> resultIds = new HashSet<>();
Set<Object> result = new HashSet<>();
for (var id : resultIds) {
result.add(storage.getObject(id).get());
}
//так не работает
result.stream().collect(object -> storage.getObject(id -> resultIds.forEach()).get());
一切似乎都很简单 - 我们将 id 从存储的 resultIds 列表中接收到的所有对象添加到结果列表中,但它在流中不起作用......
字面翻译:
.stream()您不需要从结果中调用,而是从我们正在处理的源数据中调用(您有一组 id-shnikov)。在
map我们编写一个id获取所需对象的 lambda - 事实上,它只是字符串的内部部分result.add(storage.getObject(id).get());。该方法的参数
.map()必须是将原始序列的元素转换为新序列的元素的函数。然后我们将所有元素 (
.collect()) 收集到所需的数据结构中 - 你有这个Set,所以我们使用收集器Collectors.toSet()。