Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不从我的java列表中删除重复项?_Java_Spring_Algorithm_List_Sorting - Fatal编程技术网

为什么不从我的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以了解
对象的这两种方法。