答案 0 :(得分:2)
您收到了误导性错误消息。当收集器返回的类型为ConcurrentMap<Integer, Device>
时,实际错误使用Map<Integer, Device>
类型。
如果您希望返回的Map
为ConcurrentMap
,则可以使用接受供应商的toMap
变体(确定Map
的类型)返回)。
这样的事情应该有效:
ConcurrentMap<Integer, Device> map =
devicesList.stream()
.collect(Collectors.toMap(item -> item.id,
item -> item,
(item1,item2)->item2,
ConcurrentHashMap::new));
或正如Alexis所评论的那样,只需使用Collector.toConcurrentMap
。