Java两个list找出相同部分、多余部分和少的部分(业务操作建立在此方法上)

废话不多说,直接上代码

 public static void main(String[] args) {
       //以aList为准,aList比bList多余的部分添加,少的部分删除,相同的部分更新
        List<String> aList=new ArrayList();
        List<String> bList=new ArrayList();
        List<String> updateList1=new ArrayList();
        List<String> updateList2=new ArrayList();
        List<String> addList=new ArrayList();
        List<String> delList=new ArrayList();
        aList.add("0");
        aList.add("1");
        aList.add("2");
        aList.add("3");
        aList.add("4");
        aList.add("5");
        aList.add("6");

        bList.add("0");
        bList.add("1");
        bList.add("2");
        bList.add("7");
        bList.add("8");
        bList.add("9");

        //找出需要添加的部分和共同的部分
        for (int i = 0;i<aList.size();i++){
            boolean isAdd = true;
            String aTemp = aList.get(i);
            for (int j =0;j<bList.size();j++){
                String bTemp = bList.get(j);
                if (aTemp.equals(bTemp)){
                    updateList1.add(aTemp);
                    isAdd =false;
                }
            }
            if (isAdd){
                addList.add(aTemp);
            }
        }
        //找出需要删除的部分和共同的部分
        for (int i = 0;i<bList.size();i++){
            boolean isDel = true;
            String bTemp = bList.get(i);
            for (int j =0;j<aList.size();j++){
                String aTemp = aList.get(j);
                if (aTemp.equals(bTemp)){
                    updateList2.add(aTemp);
                    isDel =false;
                }
            }
            if (isDel){
                delList.add(bTemp);
            }
        }
        System.out.println("ojbk");

    }

 

如果需要对比两个List并更新其中的数据,可以按照以下步骤进行操作: 1. 遍历其中一个List中的数据,对于每个数据,可以使用循环或者Java 8的Stream API中的filter方法来在另一个List中查找对应的数据。 2. 如果找到了对应的数据,则对比两个数据的内容,判断是否需要更新。如果需要更新,则使用Java 8的Stream API中的map方法来更新数据。 3. 如果没有找到对应的数据,则说明该数据是新增的数据,将其添加到另一个List中。 4. 对于另一个List多余的数据,可以使用Java 8的Stream API中的filter方法来过滤掉这些数据。 下面是一个示例代码,假设需要对比两个List<Student>,并更新其中的数据: ```java List<Student> list1 = ...; // 第一个List List<Student> list2 = ...; // 第二个List // 遍历第一个List中的数据 for (Student student1 : list1) { // 在第二个List中查找对应的数据 Optional<Student> optionalStudent2 = list2.stream() .filter(student2 -> student2.getId().equals(student1.getId())) .findFirst(); // 如果找到了对应的数据 if (optionalStudent2.isPresent()) { Student student2 = optionalStudent2.get(); // 比较两个数据的内容,判断是否需要更新 if (!student1.equals(student2)) { // 更新第二个List中的数据 list2 = list2.stream() .map(student -> student.getId().equals(student2.getId()) ? student1 : student) .collect(Collectors.toList()); } } else { // 如果没有找到对应的数据,则将该数据添加到第二个Listlist2.add(student1); } } // 过滤掉第二个List多余的数据 list2 = list2.stream() .filter(student2 -> list1.stream() .anyMatch(student1 -> student1.getId().equals(student2.getId()))) .collect(Collectors.toList()); ``` 需要注意的是,在进行比较时,需要确保Student类实现了equals方法和hashCode方法,以便正确地比较两个数据的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值