最近开发遇到一个问题。在编辑考勤规则里,对考勤的人进行勾选增删。前端只传所有人,没有标记哪些人是新增,哪些人是删除的。本来采用的是全删后全增。但是感觉不够好。本文通过list的差集来解决这个问题(找出增删的数据)
代码
import java.util.ArrayList;
import java.util.List;
public class Demo1 {
public static void main(String[] args){
List<String> list1 =new ArrayList<String>();
list1.add("A");
list1.add("B");
List<String> list2 =new ArrayList<String>();
list2.add("B");
list2.add("C");
/*list1.removeAll(list2);
* 输出为A
System.out.println(list1);*/
list2.removeAll(list1);
//输出为C
System.out.println(list2);
}
}
首先我们后台还是需要算出两个list。一个是前端传来的处理后的人的数据,假设为list1(新数据),另一个是我们查数据库,例如人员表的人的数据list2(旧的数据)。
然后如上的代码 list1.removeAll(list2); 输出为A。这就代表前端新传来的数据(list1)比数据库本来的数据(list2)新增了一个A的数据。那么我们直接增加A数据即可。
接着,反着来,list2.removeAll(list1); 输出为C。这就代表原本数据库里的C数据不在了,也就是删除了C。那么我们直接删除C即可。
下一篇文章,给大家介绍不用写JAVA代码。直接用sql实现(创建一个存储过程直接调用)。