import java.util.ArrayList; import java.util.HashSet; public class Test { public static void main(String[] args){ //init ArrayList<Integer> a1 = new ArrayList<Integer>(); ArrayList<Integer> a2 = new ArrayList<Integer>(); int[] arr1 = new int[]{1,2,3,4}; int[] arr2 = new int[]{1,2,5,6}; for(int i = 0;i < arr1.length;++i) a1.add(arr1[i]); for(int i = 0;i < arr2.length;++i) a2.add(arr2[i]); //get result ArrayList<Integer> result = findResult(a1, a2); System.out.println(result.toString()); } private static ArrayList<Integer> findResult(ArrayList<Integer> a1,ArrayList<Integer> a2){ @SuppressWarnings("unchecked") ArrayList<Integer> result = (ArrayList<Integer>) a1.clone(); result.removeAll(a2); a2.removeAll(a1); result.addAll(a2); return result; } }
public static void main(String[] args) {
Set<Integer> a = new HashSet<Integer>(); a.addAll(Arrays.asList(1, 2, 3, 4)); Set<Integer> b = new HashSet<Integer>(); b.addAll(Arrays.asList(1, 2, 5, 6));
System.out.println(symmetricDiff(a, b)); }
static <E> Set<E> symmetricDiff(Set<E> a, Set<E> b) { assert a != null; assert b != null; Set<E> result = new HashSet<E>(a); result.addAll(b); for(E i : a) if( b.contains(i) ) result.remove(i); return result; }
1、找出A中有B中没有的元素
2、找出B中有A中没有的元素
3、把1和2合并只要把equals的条件设定好,这个没什么难度
import java.util.ArrayList;
import java.util.HashSet;
public class Test {
public static void main(String[] args){
//init
ArrayList<Integer> a1 = new ArrayList<Integer>();
ArrayList<Integer> a2 = new ArrayList<Integer>();
int[] arr1 = new int[]{1,2,3,4};
int[] arr2 = new int[]{1,2,5,6};
for(int i = 0;i < arr1.length;++i) a1.add(arr1[i]);
for(int i = 0;i < arr2.length;++i) a2.add(arr2[i]);
//get result
ArrayList<Integer> result = findResult(a1, a2);
System.out.println(result.toString());
}
private static ArrayList<Integer> findResult(ArrayList<Integer> a1,ArrayList<Integer> a2){
@SuppressWarnings("unchecked")
ArrayList<Integer> result = (ArrayList<Integer>) a1.clone();
result.removeAll(a2);
a2.removeAll(a1);
result.addAll(a2);
return result;
}
}
Set<Integer> a = new HashSet<Integer>();
a.addAll(Arrays.asList(1, 2, 3, 4));
Set<Integer> b = new HashSet<Integer>();
b.addAll(Arrays.asList(1, 2, 5, 6));
System.out.println(symmetricDiff(a, b));
}
static <E> Set<E> symmetricDiff(Set<E> a, Set<E> b) { assert a != null;
assert b != null; Set<E> result = new HashSet<E>(a);
result.addAll(b); for(E i : a)
if( b.contains(i) )
result.remove(i);
return result;
}