【发布时间】:2019-09-01 14:51:51
【问题描述】:
我正在尝试将多个不必要的 Web 请求合并到一张地图中,其中键连接到位置的 ID,值是该位置的产品列表。
这个想法是通过为每个位置创建一个请求并映射到它的所需产品列表来减少对我的烧瓶服务器的请求量。
我曾尝试使用 Java 8 的流式传输功能找到遇到类似问题的其他人,但我找不到任何尝试追加到地图中的列表的人。
示例;
public class Product {
public Integer productNumber();
public Integer locationNumber();
}
List<Product> products = ... (imagine many products in this list)
Map<Integer, List<Integer>> results = products.stream()
.collect(Collectors.toMap(p -> p.locationNumber, p -> Arrays.asList(p.productNumber));
另外,第二个p 参数无法访问流中的当前产品。
因此,当位置编号与预先存在的列表匹配时,我无法测试是否可以附加到列表中。我不相信我可以使用 Arrays.asList(),因为我相信它是不可变的。
最后,地图应该在每个位置的列表中包含许多产品编号。是否可以将整数附加到地图中的预先存在的列表中?
【问题讨论】:
-
Collectors.toMap(p -> p.locationNumber, p -> Arrays.asList(p.productNumber), (l1,l2) -> {l1.addAll(l2);return l1;})也可以为您工作。虽然grouping在这里更有意义。
标签: java list dictionary java-stream