나는 자바에서 스트림을 사용하여 HashMap의 <롱, 롱>를 입력하려면 어떻게

MWB :

나는 채우려는 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 정도로 존재하는 콜렉터> 공급자에 따르는 것으로

결론 : 나는 붙어입니다.

또한 (분명히), I 광장 값으로지도를 채우는 것보다 더 복잡한 일을하려고 ...

또한 :

그냥 스트림이 있는지 확인하십시오 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

추천

출처http://43.154.161.224:23101/article/api/json?id=206252&siteId=1