Java Arrary List 显示两条数据不同的部分

显示两个数据的不同部分,结果显示成了两个数据加在一起,这是为什么:是代码出错了吗怎么改呢


   public   ArrayList<Queshu> listLost() {
        ArrayList<Queshu> all = listAll();
        ArrayList<Queshu> part = listPart();
        ArrayList<Queshu> lost = new ArrayList<>();
        for(Queshu s:all){  
            if(!part.contains(s))
                lost.add(s);
        }
           for(Queshu s:part){  
            if(!all.contains(s) )
                 lost.add(s);
        }    
        return  lost;
    }

所有代码


public class ProblemBDAO {

    
    /**
     * 显示全部记录
     *
     * @return
     */
    public    ArrayList<Queshu> listAll() {
        List <String>    datas=FileUtils.readLines("d:/ks/20214075221/data/b/all.txt");
        ArrayList<Queshu> all = new ArrayList<Queshu>();
       for(String data :datas){
       String temp[]=data.replaceAll("\"","").split(",");
       Queshu queshu = new Queshu(Integer.parseInt(temp[0]),temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8]);
       all.add(queshu);
               }
        return all;
    }  
    public   ArrayList<Queshu> listPart() {
        List <String>    datas=FileUtils.readLines("d:/ks/20214075221/data/b/part.txt");
        ArrayList<Queshu> all = new ArrayList<Queshu>();
       for(String data :datas){
       String temp[]=data.replaceAll("\"","").split(",");
       Queshu queshu = new Queshu(Integer.parseInt(temp[0]),temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8]);
       all.add(queshu);
       }
        return all;
    
    } 
    //返回不同的数据
    public   ArrayList<Queshu> listLost() {
        ArrayList<Queshu> all = listAll();
        ArrayList<Queshu> part = listPart();
        ArrayList<Queshu> lost = new ArrayList<>();
        for(Queshu s:all){  
            if(!part.contains(s))
                lost.add(s);
        }
           for(Queshu s:part){  
            if(!all.contains(s) )
                 lost.add(s);
        }    
        return  lost;
    }    
    
    //返回重复数据
    public  ArrayList<Queshu> listRepeat() {
        ArrayList<Queshu> allList = listAll();
        ArrayList<Queshu> partList = listPart();
        ArrayList<Queshu> repeatList = new ArrayList<>();
        
           //补充代码
        for (Queshu s: partList){
        if (allList.contains(s))
            repeatList.add(s);
            }
        
        return repeatList;
    }
    public static void main(String[] args) {

    }
}

img

img

img

ArrayList<Queshu> all = listAll();
ArrayList<Queshu> part = listPart();

你这里 的 Queshu 实例 都是不一样的
不能直接判断包含,应该比较每个对象的 id是不是相等,来判断 是不是 重复的

//返回不同的数据 方法里面
删除一个循环