Collectors.toMap与Supplier参数

时间:2017-05-04 11:04:37

标签: java lambda

我无法理解,也没有找到带有Supplied参数的Collectors.toMap方法的合适示例; this one

我完全理解其他人,使用函数创建键,值,处理重复项的二进制文件,我只是不明白最后一个有额外供应商参数的方法。

2 个答案:

答案 0 :(得分:3)

以下是一个例子:

Arrays.asList(1, 2, 3).stream()
      .collect(Collectors.toMap(i -> i, i -> i, (i, j) -> i, HashMap::new));

在此示例中,Supplier<M> mapSupplierHashMap::new,是一个能够创建空Map的工厂。

答案 1 :(得分:0)

您提到的方法可让您同时决定:

  • 具体地图实施(例如 HashMap ConcurrentHasMap 等等。)
  • 该实现的具体实例(您可以传递新创建的实例或很久以前在应用堆上创建的实例)

与此方法相比,在其他2个重载版本中,地图的实现将由库选择,并将创建它的新实例。