如何在Java中使用流填充HashMap <long,long =“”>

时间:2019-02-02 13:55:23

标签: java hashmap java-stream collectors

我想使用Java中的流填充HashMap<Long, Long>。但是,我做错了。我希望有人能提供帮助。

我一直在考虑以下方面:

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

底线:我被困住了。

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

1 个答案:

答案 0 :(得分:3)

只需确保您的流为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