筛选两个数组中不同的元素
在页面中有checkbox多项选择时,如果未选择某一项,有时候想要获得未选中的checkbox的值,就需要从数据库中查询所有的值(list),把从前端传到后端的选中的checkbox值作为数组t1,把从数据库中获得的所有的checkbox的值作为t2或list2
1.筛选数组t2中与t1不同的元素
private <T> List<T> compareArrary(T[] t1, T[] t2) { List<T> list1 = Arrays.asList(t1); List<T> list2 = new ArrayList<T>(); for (T t : t2) { if (!list1.contains(t)) { list2.add(t); //筛选t2中与t1不同的元素 } } return list2; }
2.筛选两个数组中不同的元素
private <T> List<T> compareArray(T[] t1, T[] t2) { List<T> list1 = Arrays.asList(t1); List<T> list2 = Arrays.asList(t2); List<T> list3 = new ArrayList<T>(); for (T t : t2) { if (!list1.contains(t)) { list3.add(t); //筛选t2中与t1不同的元素 } } for (T t : t1) { if (!list2.contains(t)) { list3.add(t); //筛选t1中与t2不同的元素 } } return list3; }
3.筛选数组和ArrayList的不同元素
private <T> List<T> compare(T[] t1, List<T> list2) { List<T> list1 = Arrays.asList(t1); List<T> list3 = new ArrayList<T>(); for (T t : list2) { if (!list1.contains(t)) { list3.add(t); //筛选t2中与t1不同的元素 } } for (T t : t1) { if (!list2.contains(t)) { list3.add(t); //筛选t1中与t2不同的元素 } } return list3; }
例子
public class test { public static void main(String[] args){ test test=new test(); Integer[] a={1,3,5,9}; Integer[] b={2,3,5,7,0}; List<Integer> list = test.compare(a, b); for (int i=0;i<list.size();i++) { System.out.print(list.get(i)+","); } } private <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<T>(); for (T t : t2) { if (!list1.contains(t)) { list3.add(t); //筛选t2中与t1不同的元素 } } for (T t : t1) { if (!list2.contains(t)) { list3.add(t); //筛选t1中与t2不同的元素 } } return list3; }
结果