28 Java练习——实现两个集合的交集和并集

        求并集的思路:假设传入的是一个ArrayList对象,求并集的时候直接调用其中一个List集合的addAll方法将另一个集合合并过来,而List的特性是有序,重复的。因此,使用Set接口的无序不可重复的特性,把Collection对象作为输入,将ArrayList转为HashSet对象,对元素进行去重,即可得到两个集合的并集。

        求交集的思路:使用嵌套循环,判断list1的第i个元素是否与list2的第j个元素相同,如果相同则存放在一个HashSet集合中,为什么使用Set集合呢?因为假设list1的第一个元素和第二个元素都是1,list的第一个元素是1,那么就会出现存放两次的情况,使用Set集合直接对重复元素去重,当然,也可以先把两个List集合先去重,再判断是否元素相同。

package jiang.com;

import java.util.*;

public class Practice2 {
    //实现两个集合的交集和并集
    public static void main(String[] args) {
        new ArrayList<Integer>();
        List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(1,1,3,4,5,77,66));
        System.out.println("集合1:"+list1);
        List<Integer> list2 = new ArrayList<Integer>(Arrays.asList(2,1,6,4,3,72,66));
        System.out.println("集合2:"+list2);
        Set<Integer> set3 = new HashSet<Integer>(); // 存放并集
        set3.addAll(list1);
        set3.addAll(list2);
        System.out.println("并集:"+set3);

        Set<Integer> set4 = new HashSet<Integer>(); // 存放交集
        for (Integer num1 : list1){
            for (Integer num2 : list2){
                if (num1.equals(num2)){
                    set4.add(num1);
                    break; // 跳出第二个for循环
                }
            }
        }
        System.out.println("交集:"+set4);
    }
}

        运行结果:

猜你喜欢

转载自blog.csdn.net/no996yes885/article/details/132116430