Как мне заполнить HashMapиспользуя поток в Java - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу заполнить HashMap<Long, Long> с помощью потока в Java.Однако, я не понимаю это правильно.Я надеюсь, что кто-то может помочь.

Я думал так:

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> соответствуетПоставщик

Итог: я застрял.

Также (очевидно) я пытаюсь сделать что-то более сложное, чем заполнение карты квадратными значениями ...

1 Ответ

0 голосов
/ 02 февраля 2019

Просто убедитесь, что ваш поток 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
...