使用 Java 中的方法引用在 Collectors toMap 方法中获取流对象
Getting the stream object in Collectors toMap method using Method References in Java 8
我正在尝试使用 stream()
迭代列表并放入映射,其中键是 steam 元素本身,值是 AtomicBoolean,true。
List<String> streamDetails = Arrays.asList("One","Two");
toReplay = streamDetails.stream().collect(Collectors.toMap(x -> x.toString(), new AtomicBoolean(true)));
我在编译时遇到以下错误。
Type mismatch: cannot convert from String to K
The method toMap(Function<? super T,? extends K>, Function<? super T,? extends U>) in the type Collectors is not applicable for the arguments ((<no type> x) -> {},
AtomicBoolean)
我做错了什么,我应该用什么替换我的x -> x.toString()
?
new AtomicBoolean(true)
是对 Collectors.toMap
的第二个参数无效的表达式。
toMap
这里需要一个 Function<? super String, ? extends AtomicBoolean>
(旨在将流元素(或类型 String)转换为预期类型 AtomicBoolean 的映射值),正确的参数可能是:
Collectors.toMap(x -> x.toString(), x -> new AtomicBoolean(true))
也可以写成Function.identity
:
Collectors.toMap(Function.identity(), x -> new AtomicBoolean(true))
我正在尝试使用 stream()
迭代列表并放入映射,其中键是 steam 元素本身,值是 AtomicBoolean,true。
List<String> streamDetails = Arrays.asList("One","Two");
toReplay = streamDetails.stream().collect(Collectors.toMap(x -> x.toString(), new AtomicBoolean(true)));
我在编译时遇到以下错误。
Type mismatch: cannot convert from String to K
The method toMap(Function<? super T,? extends K>, Function<? super T,? extends U>) in the type Collectors is not applicable for the arguments ((<no type> x) -> {},
AtomicBoolean)
我做错了什么,我应该用什么替换我的x -> x.toString()
?
new AtomicBoolean(true)
是对 Collectors.toMap
的第二个参数无效的表达式。
toMap
这里需要一个 Function<? super String, ? extends AtomicBoolean>
(旨在将流元素(或类型 String)转换为预期类型 AtomicBoolean 的映射值),正确的参数可能是:
Collectors.toMap(x -> x.toString(), x -> new AtomicBoolean(true))
也可以写成Function.identity
:
Collectors.toMap(Function.identity(), x -> new AtomicBoolean(true))