收集整数列表(List <integer>)以与Java 8 Stream API映射

时间:2018-11-16 07:13:08

标签: arraylist collections java-8 hashmap java-stream

我尝试使用Java 8流API将简单的List<Integer>转换为Map,并遇到以下编译时错误:

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));

使用Java 8流API的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

您正在为值映射器传递boolean。您应该通过Function<Integer,Boolean>

应该是:

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