java - 将流中的列表附加到 map

标签 java list dictionary java-stream

我正在尝试将多个不必要的 Web 请求整合到一个 map 中,键连接到位置的 ID,值是该位置的产品列表。

我的想法是通过为每个位置创建一个请求并将所需产品列表映射到它来减少对我的 flask 服务器的请求量。

我试图找到其他使用 Java 8 的流功能时遇到类似问题的人,但我找不到任何人试图追加到 map 中的列表。

例子;

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(),因为我相信它是不可变的。

最后, map 的每个位置列表中应该有许多产品编号。是否可以将整数附加到 map 中预先存在的列表中?

最佳答案

你可以这样做,

Map<Integer, List<Integer>> res = products.stream()
    .collect(Collectors.groupingBy(Product::locationNumber,
        Collectors.mapping(Product::productNumber, Collectors.toList())));

关于java - 将流中的列表附加到 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55624530/

相关文章:

java - JScrollPane 在具有两个面板的 JFrame 中

java - JApplet 绘制形状

java - 在 Graphhopper 中,如何检索路径中包含的边集?

python从另一个列表中删除列表的元素,其中两个列表中的项目多次出现

list - Haskell-循环列表的每个第二个元素

python - 如何将字典以某种格式写入文件

java - XOM 获取文档到字符串

python - 在 Python 中循环遍历列表,增加值,同时在每次迭代时遍历列表

python - 测试所有字典项是否为 'True' 的快速方法

ios - tableView Swift 中的乘积值