public static <T> List<T> compare(T[] t1, T[] t2) {
List<T> list1 = Arrays.asList(t1);
List<T> list2 = Arrays.asList(t2);
//用来保存最后结果的集合
List<T> list3 = new ArrayList<>();
for (T t : t2) {
if (!list1.contains(t)) {
list3.add(t);
}
}
for (T t:t1) {
if (!list2.contains(t)) {
list3.add(t);
}
}
return list3;
}
public static void main(String[] arg){
String[] array1 = {"1", "2", "3","12"};
String[] array2 = {"1", "2", "3", "4","44"};
List<String> list = compare(array1,array2);
System.out.println("----两个数组找出不同的元素-----");
for (String num : list) {
System.out.print(num+" ");
}
}
public static void compare(String[] t1, String[] t2) {
Set<String> set1 = new HashSet<>(Arrays.asList(t1));
Set<String> set2 = new HashSet<>(Arrays.asList(t2));
Set<String> set3 = new HashSet<>(set2);
// set集合有去重特性
set3.addAll(set1);
//retainAll():保留包含在指定 collection 中的元素;
set1.retainAll(set2);
// removeAll(); 移除 set 中那些包含在指定 collection 中的元素 ;
set3.removeAll(set1);
System.out.println(set3);
}
public static void main(String[] arg){
String[] array1 = {"1", "2", "3","12"};
String[] array2 = {"1", "2", "3", "4","44"};
compare(array1,array2);
}
发现不符合业务 这样查询出来 不知道那个要删除 那个要添加
我的业务是传入数组和数据库对比数据库没有则删除,数据库有则修改,数组多则添加
public static void compare(String[] t1, String[] t2) {
//用来保存没有的数据 也就是前端传进来的新数据 新添加
List<String> addArrayList= new ArrayList(Arrays.asList(t1));
//用来保存数据库有的数据 但是 前端没有的数据 删除
List<String> delArrayList = new ArrayList(Arrays.asList(t2));
for (String s:t1){
for (String ss:t2){
if (s.equals(ss)){
//相等的话 证明数据已有数据了 不需要删除 也不需要添加 那需要在数组里面把这个条数据删除
addArrayList.remove(s);
delArrayList.remove(ss);
}
}
}
System.out.println("t3:"+addArrayList);
System.out.println("t4:"+delArrayList);
}
public static void main(String[] arg){
String[] array1 = {"1", "2", "3","12"};
String[] array2 = {"1", "2", "3", "4","44"};
compare(array1,array2);
}
这样才可以实现我要的数据