Java中使用Set进行并集,差集,交集查找

利用Java中使用Set进行并集,差集,交集查找

首先命名一个类名为DealSet存放查找并集,差集,交集的方法

DealSet.java

package SetLearning;

import java.util.HashSet;
import java.util.Set;

public class DealSet<T> {

    private Set<T> differentSet ;
    private Set<T> sameSet ;
    private Set<T> unionSet ;

    /*
     * union方法计算并集
     */
    public Set<T> Union(Set<T> s1 , Set<T> s2){
         unionSet = new HashSet<T>();
         /*
          * 利用Set的元素不可重复特性往unionSet中添加元素形成并集
          */
        for(T s : s1){
            unionSet.add(s);
        }
        for(T s : s2){
             unionSet.add(s);
        }
        return unionSet ;
    }


    /*
     * sameSet方法返回并集
     */
    public Set<T> sameSet(Set<T> s1 , Set<T> s2){
        sameSet = new HashSet<T>();
        /*
         * 利用ForEach循环和HashSet中的contains方法判断两个Set中元素是否相交
         * 相交则存入SameSet中
         */
        for(T s : s1){
            if(s2.contains(s))
                sameSet.add(s);
        }
        return sameSet;
    }

        /*
         * differentSet方法返回差集
         */
        public Set<T> differentSet(Set<T> s1 , Set<T> s2){
            differentSet = new HashSet<T>();
            /*
             * 利用ForEach循环和HashSet中的contains方法判断两个Set中元素是否相交
             * 不相交则存入differentSet中
             */
            for(T s : s1){
                if(!s2.contains(s))
                    differentSet.add(s);
            }
            return differentSet;
        }
    }


代码中,由于differentSet与sameSet算法可以合并,可以提高效率。 
但由于某些情况下并不需要差集与交集同时计算,所以分开之。 
接下来写测试类

DealSetTest.java

package SetLearning;

import java.util.HashSet;
import java.util.Set;

public class DealSetTest {
        public static void main(String[] args) {
            /*
             * 初始化两个HashSet
             */
            Set<String> hashSet1 = new HashSet<>();
            Set<String> hashSet2 = new HashSet<>();
            /*
             * 创建连个字符串数组,用于储存两个HashSet中元素
             */
            String[] s1 = {"George" , "Jim" , "John" , "Blake" , "Kevin" , "Mechael"};
            String[] s2 = {"George" , "Katie" , "Ryan" ,  "Kevin" , "Mechael"};
            /*
             * 使用ForEach循环向Hash中添加元素
             * 避免一行一行添加造成代码不美观
             */
            for(String s : s1){
                hashSet1.add(s);
            }
            for(String s : s2){
                hashSet2.add(s);
            }
            /*
             * 调用DealSet累中个方法进行计算
             */
            DealSet<String> ds = new DealSet<String>();
            System.out.println("Union Set is "+ds.Union(hashSet1, hashSet2));
            System.out.println("Different Set is " + ds.differentSet(hashSet1, hashSet2));
            System.out.println("Same Set is " + ds.sameSet(hashSet1, hashSet2));


        }

}
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值