需求:用户编辑页面的一个列表,程序需要判断出用户删除了哪些、新增了哪些、保留了哪些。
解决方案:
public static void main(String[] args) {
ArrayList<String> listEx = new ArrayList<>();
listEx.add("1111");
listEx.add("2222");
listEx.add("3333");
ArrayList<String> listNow = new ArrayList<>();
listNow.add("3333");
listNow.add("4444");
listNow.add("5555");
// 交集
System.out.println("remain");
// ArrayList<String> remain = new ArrayList<>(listEx);//使用构造方法初始化
// ArrayList<String> remain = (ArrayList<String>) listEx.clone();//使用clone初始化
ArrayList<String> remain = new ArrayList<>();// 保留的记录
remain.addAll(listEx);
remain.retainAll(listNow);
printStr(remain);
// 差集
System.out.println("add");
ArrayList<String> add = new ArrayList<>();// 新增的记录
add.addAll(listNow);
add.removeAll(listEx);
printStr(add);
System.out.println("del");
ArrayList<String> del = new ArrayList<>();// 删除的记录
del.addAll(listEx);
del.removeAll(listNow);
printStr(del);
// 并集
System.out.println("all");
ArrayList<String> all = new ArrayList<>();
all.addAll(listNow);
all.addAll(listEx);
printStr(all);
// 无重复并集
System.out.println("distinctall");
ArrayList<String> distinctall = new ArrayList<>();
distinctall.addAll(listEx);
ArrayList<String> listNow2 = new ArrayList<>();
listNow2.addAll(listNow);
listNow2.removeAll(distinctall);
distinctall.addAll(listNow2);
printStr(distinctall);
}
public static void printStr(List<?> list1) {
System.out.println("-----------------------------------");
for (int i = 0; i < list1.size(); i++) {
System.out.println(list1.get(i));
}
}