Java代码找出两个集合的不同的元素的两种方法

public class chapter01 {
    public static void main(String[] args) {
        //两个线性表,A,B
        //找出两集合的不重复元素
        ArrayList<String> a = new ArrayList<>();
        a.add("李白");
        a.add("杜甫");
        a.add("韩愈");
        ArrayList<String> b = new ArrayList<>();
        b.add("李白");
        b.add("陶渊明");
        b.add("杜甫");
        b.add("李清照");
        getDif01(a, b);
        getDif02(a, b);

    }

    public static void getDif01(ArrayList<String> a,ArrayList<String> b ) {
        ArrayList<String> dif = new ArrayList<>();
        //查找出a表中不包含b的元素
        for (String s : b) {
            if (!(a.contains(s))) {
                dif.add(s);
            }
        }
        //查找出b表中不包含a的元素
        for (String s : a) {
            if (!(b.contains(s))) {
                dif.add(s);
            }
        }
        System.out.println(Arrays.toString(dif.toArray()));
    }

    public static void getDif02(ArrayList<String> a, ArrayList<String> b) {
        //1代表重复元素,2表不重复元素
        HashMap<String, Integer> map = new HashMap<>();
        ArrayList<String> dif = new ArrayList<>();
        for (String s : a) {
            map.put(s, 1);
        }
        for (String s : b) {
            //根据b的元素作为key去查找,不为null代表重复元素
            if (map.get(s) != null) {
                //map会覆盖之前重复的元素,从而1都是不重复的元素
                map.put(s, 2);
            }else{
                map.put(s, 1);
            }
        }
        Iterator<String> iterator = map.keySet().iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            if (map.get(next) == 1) {
                dif.add(next);
            }
        }
        System.out.println(Arrays.toString(dif.toArray()));

    }
}

猜你喜欢

转载自blog.csdn.net/qq_35953966/article/details/105197793
今日推荐