Соберите список Integer (List <Integer>) для сопоставления с Java 8 Stream API - PullRequest
0 голосов
/ 16 ноября 2018

Я попытался преобразовать простое List<Integer> в Map, используя потоковый API Java 8, и получил следующую ошибку времени компиляции:

The method toMap(Function<? super T,? extends K>, Function<? super T,? 
extends U>) in the type Collectors is not applicable for the arguments 
(Function<Object,Object>, boolean)

Мой код:

ArrayList<Integer> m_list = new ArrayList<Integer>();

m_list.add(1);
m_list.add(2);
m_list.add(3);
m_list.add(4);

Map<Integer, Boolean> m_map = m_list.stream().collect(
                Collectors.toMap(Function.identity(), true));

Я также попробовал второй метод ниже, но получил ту же ошибку.

Map<Integer, Boolean> m_map = m_list.stream().collect(
                Collectors.toMap(Integer::intValue, true));

Как правильно сделать это, используя потоковый API Java 8?

1 Ответ

0 голосов
/ 16 ноября 2018

Вы передаете boolean для преобразователя значений.Вы должны передать Function<Integer,Boolean>.

Это должно быть:

Map<Integer, Boolean> m_map = m_list.stream().collect(
            Collectors.toMap(Function.identity(), e -> true));
...