Java 使用流从集合/列表中删除重复的自定义对象,而不使用等号 Set responses=someList.stream() .map(角色->新响应(参数1、参数2)) .收集(toSet());
如果我这样做,那么我将拥有一个包含重复条目的集合/列表。如何避免在响应类中不实现equals方法而产生重复项?根据@Holger的评论,如果Java 使用流从集合/列表中删除重复的自定义对象,而不使用等号 Set responses=someList.stream() .map(角色->新响应(参数1、参数2)) .收集(toSet());,java,java-stream,Java,Java Stream,如果我这样做,那么我将拥有一个包含重复条目的集合/列表。如何避免在响应类中不实现equals方法而产生重复项?根据@Holger的评论,如果param1和param2是独立于someList中的role对象的一些横向参数,您只需检查someList是否为空,并根据需要返回一个空集合或一个只包含元素的集合: Set responses=someList.isEmpty() ? Collections.emptySet() :设置(新响应(参数1,参数2)); 为什么不能实现equals?在无法比较
param1
和param2
是独立于someList
中的role
对象的一些横向参数,您只需检查someList
是否为空,并根据需要返回一个空集合或一个只包含元素的集合:
Set responses=someList.isEmpty()
? Collections.emptySet()
:设置(新响应(参数1,参数2));
为什么不能实现equals
?在无法比较类的情况下,如何检查重复项?您可以使用Comparable,但您只需将所有相等的逻辑放在其中。根据您想要检测重复条目的内容?查找?因此,param1
和param2
与role
完全不同?然后只需使用Collections.singleton(新响应(param1,param2))
。