业务场景
两张表,假设是文章和图片表,一篇文章对应多张图片,每次修改前端传值都是文章对象里面包含多个图片对象集合,我每次修改都要知道那些图片要添加,那些图片要去数据库删除。
代码展示就是有两个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求职