Java 8 Java8流:添加验证以避免重复密钥

Java 8 Java8流:添加验证以避免重复密钥,java-8,java-stream,Java 8,Java Stream,以下代码在尝试添加重复id时引发异常。如何修改代码以避免重复 return Optional.ofNullable(list) .isPresent() ? (list.stream() .collect(Collectors.toMap(ViewObject::getId, viewObject -> viewObject))) : new HashMap<>(); return可选。不可用(列表) .isPresent()?(list.stream() .co

以下代码在尝试添加重复id时引发异常。如何修改代码以避免重复

return Optional.ofNullable(list)
   .isPresent() ? (list.stream()
   .collect(Collectors.toMap(ViewObject::getId, viewObject -> viewObject))) : new HashMap<>();
return可选。不可用(列表)
.isPresent()?(list.stream()
.collect(Collectors.toMap(ViewObject::getId,ViewObject->ViewObject)):new HashMap();
有一个of
toMap
,允许指定
合并功能

Collectors.toMap(ViewObject::getId,
    viewObject -> viewObject,
    (a, b) -> a // Resolve the duplicates here
)
另外,
Optional.ofNullable(list).isPresent()似乎没有必要。如果列表为
null
,则可以通过初始化列表来完全跳过它<代码>可选
s应在方法签名中使用,而不是在方法正文中使用。

有一个允许指定
合并函数的
toMap

Collectors.toMap(ViewObject::getId,
    viewObject -> viewObject,
    (a, b) -> a // Resolve the duplicates here
)
另外,
Optional.ofNullable(list).isPresent()似乎没有必要。如果列表为
null
,则可以通过初始化列表来完全跳过它
Optional
s应在方法签名中使用,而不是在方法正文中使用。

请参阅此
Optional.ofNullable(list)。isPresent()
是检查
list!=空
。如果要不惜一切代价避免使用普通运算符,请使用
returnobjects.requirenonullElse​(list,Collections.emptyList()).stream().collect(Collectors.toMap(ViewObject::getId,ViewObject->ViewObject))请参阅此
可选。ofNullable(list)。isPresent()
是检查
列表!=空
。如果要不惜一切代价避免使用普通运算符,请使用
returnobjects.requirenonullElse​(list,Collections.emptyList()).stream().collect(Collectors.toMap(ViewObject::getId,ViewObject->ViewObject))