0
点赞
收藏
分享

微信扫一扫

两个list去掉相同的对象

萨科潘 2022-01-21 阅读 104

业务场景

两张表,假设是文章和图片表,一篇文章对应多张图片,每次修改前端传值都是文章对象里面包含多个图片对象集合,我每次修改都要知道那些图片要添加,那些图片要去数据库删除。

代码展示就是有两个list,一个是前端传的新图片集合,一个是数据库查询的上一次的图片集合,我想要去掉这两个list相同的数据,前端传的list是添加图片,数据库查询的list是删除数据库图片,再不重写对象equals或hasecode等方法的其他方式

列子1(倒序remove):

List<String> newL=new ArrayList();
newL.add("5");
newL.add("6");
newL.add("7");
List<String> b=new ArrayList();
b.add("1");
b.add("2");
b.add("3");
b.add("5");
b.add("7");
for (int i=newL.size()-1;i>=0;i--){
        Object a=newL.get(i);
        for (int g=b.size()-1;g>=0;g--){
                Object c=b.get(g);
                if(a.equals(c)){
                        newL.remove(a);
                        b.remove(c);
                }
        }
}
System.out.println("添加"+newL);
System.out.println("删除"+b);


 

列子2:

List<String> newL=new ArrayList();
newL.add("5");
newL.add("6");
newL.add("7");
List<String> b=new ArrayList();
b.add("1");
b.add("2");
b.add("3");
b.add("5");
b.add("7");
 
 
List<String> add=new ArrayList();
List<String> remove=new ArrayList();
 
get(b,newL,remove);
get(newL,b,add);
System.out.println("添加"+add);
System.out.println("删除"+remove);


public static void get(List<String> waiwei,List<String> neiwei,List<String> list){
        boolean e;
        for (String str:waiwei) {
                e=true;
                for (String stdr:neiwei) {
                        if(str.equals(stdr)){
                                e=false;
                        }
                }
                if(e){
                    list.add(str);
                }
        }
}

希望大家关注我一波,防止以后迷路,有需要的可以私聊我加群讨论互相学习java ,学习路线探讨,经验分享与java求职

举报

相关推荐

0 条评论