当前位置: 代码迷 >> J2SE >> 小算法求思路解决方法
  详细解决方案

小算法求思路解决方法

热度:9321   发布时间:2013-02-25 00:00:00.0
小算法求思路
、有两个集合,A集合内容为:{1、2、3、4},B集合内容为:{1、2、5、6},两个集合的对称差定义为A Δ B = (A ? B) ∪(B ? A),上述A、B两集合的对称差为{3、4、5、6}。编写一个程序,用散列集求两个集合A、B的对称差集合,即求 (A ? B) ∪(B ? A),

------解决方案--------------------------------------------------------
Java code
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;    }}
  相关解决方案