【问题标题】:How do I fill a HashMap<Long, Long> using a Stream in Java如何在 Java 中使用 Stream 填充 HashMap<Long, Long>
【发布时间】:2019-06-26 20:53:30
【问题描述】:

我想使用 Java 中的 Stream 填充 HashMap&lt;Long, Long&gt;。但是,我没有做对。我希望有人可以提供帮助。

我的想法是这样的:

HashMap<Long, Long>  mapLongs = LongStream
    .rangeClosed(1, 10)
    .collect(Collectors.toMap(x -> x, x -> getSquare(x)));

其中getSquare 是一个返回正方形的简单函数,例如:

long getSquare(long x) {
    return x * x;
}

但是,我收到一条错误消息,指出 getSquare() 不能应用于对象。当我尝试将 x 强制转换为对象时,出现以下错误:

不存在类型变量 A、K、T、U 的实例,因此 Collector> 符合 Supplier

底线:我被卡住了。

另外(显然),我正在尝试做一些比用平方值填充地图更复杂的事情......

【问题讨论】:

    标签: java hashmap java-stream collectors


    【解决方案1】:

    只需确保您的信息流是boxed

    Map<Long, Long> mapLongs = LongStream  // programming to interface 'Map'
            .rangeClosed(1, 10)
            .boxed()
            .collect(Collectors.toMap(x -> x, x -> getSquare(x))); // can use method reference as well
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 2013-09-22
      • 2012-12-11
      • 2011-10-26
      • 1970-01-01
      相关资源
      最近更新 更多