为什么不从我的java列表中删除重复项?
为什么要遵循返回相同值的代码。我想做的是从列表中删除重复项为什么不从我的java列表中删除重复项?,java,spring,algorithm,list,sorting,Java,Spring,Algorithm,List,Sorting,为什么要遵循返回相同值的代码。我想做的是从列表中删除重复项 List<userDto> list=uC.getIds(dto); userDto dto1=new userDto(); List<userDto> user = new ArrayList<>(); if(list.size()>0){ for (int i = 0; i < list.size(); i++) { dto1=uC.getM(l
List<userDto> list=uC.getIds(dto);
userDto dto1=new userDto();
List<userDto> user = new ArrayList<>();
if(list.size()>0){
for (int i = 0; i < list.size(); i++) {
dto1=uC.getM(list.get(i));
if(!dto1.userId.equals(userId)){
user.add(dto1);
}
}
}
List List=uC.getIds(dto);
userDto dto1=新的userDto();
List user=new ArrayList();
如果(list.size()>0){
对于(inti=0;i
在这里,我创建了一个新的列表并检查了重复项。我做错了吗。。请帮忙
List<userDto> list=uC.getIds(dto);
userDto dto1=new userDto();
List<userDto> newList = new ArrayList<>();
for (userDto d : list) {
if (!newList.contains(d)) {
newList.add(d);
}
}
List<userDto> user = new ArrayList<>();
if(newList.size()>0){
for (int i = 0; i < newList.size(); i++) {
dto1=uC.getM(newList.get(i));
if(!dto1.userId.equals(userId)){
user.add(dto1);
}
}
}
List List=uC.getIds(dto);
userDto dto1=新的userDto();
List newList=newarraylist();
对于(userDto d:list){
如果(!newList.contains(d)){
新增(d);
}
}
List user=new ArrayList();
如果(newList.size()>0){
对于(inti=0;i
注:我是JAVA新手。首先,确保您的
等于和hashCode
函数是正确的。equals为true的任何内容都应该具有相同的哈希代码
然后,您可以使用集合来自然地删除重复项并将其收集回列表中
list = new HashSet<>(list).stream().collect(Collectors.toList());
list=newhashset(list).stream().collect(Collectors.toList());
尝试覆盖userDto中的等于。由于您尚未在userDto contains方法中重写它,所以不知道如何将传递的对象和列表中的对象进行匹配。很抱歉,我不明白您的意思?你能解释一下吗?@KunwarSagar对象
类是所有其他类的基类,它有一个方法等于(Object)
。如果一个对象被认为与作为参数传递给该方法的对象相等,则该方法将返回true
<但是,如果传递的对象与调用equals
方法的对象具有相同的标识,则code>Object
自身的实现仅返回true。您可以重写该方法来定义自己对对象是否等于另一个对象的定义@我有点明白你的意思。但由于我正在处理列表。。我无法实施它。我是这个领域的新手。。。我真的不知道该怎么办。。如果我能从列表中删除重复的值就好了。那太好了。。还有别的办法吗?@KunwarSagar你确实在处理一个列表。。。使用userDto
对象!您需要做的是更新userDto
类——顺便说一下,它的名称应该是userDto
——并重写(重新实现)equals
方法。您正在使用List
的contains
方法,该方法依赖于equals
方法。我也建议你。我不明白你想说什么。。我对这件事不熟悉。。我也试过这个。。它也不起作用<代码>列表distinctElements=List.stream().distinct().collect(Collectors.toList())代码>集合自然不允许重复,因此将它们添加到集合将删除重复项,然后您可以将该集合返回到列表中。如果不起作用,您需要查看userDto
上的equals
和hashCode
函数。如果没有正确编写这些文件,任何简单的方法都无法删除重复文件。请阅读javaDocs以了解对象的这两种方法。