打印出两个set中差集_Java中使用Set进行并集,差集,交集查找

本文介绍了如何在Java中使用Set数据结构进行并集、差集和交集的查找。通过创建`DealSet`类,分别实现了`Union()`、`sameSet()`和`differentSet()`方法。在`DealSetTest`测试类中,展示了如何初始化两个HashSet,并调用这些方法打印出它们的并集、差集和交集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

DealSet.java

package SetLearning;

import java.util.HashSet;

import java.util.Set;

public class DealSet {

private Set differentSet ;

private Set sameSet ;

private Set unionSet ;

/*

* union方法计算并集

*/

public Set Union(Set s1 , Set s2){

unionSet = new HashSet();

/*

* 利用Set的元素不可重复特性往unionSet中添加元素形成并集

*/

for(T s : s1){

unionSet.add(s);

}

for(T s : s2){

unionSet.add(s);

}

return unionSet ;

}

/*

* sameSet方法返回并集

*/

public Set sameSet(Set s1 , Set s2){

sameSet = new HashSet();

/*

* 利用ForEach循环和HashSet中的contains方法判断两个Set中元素是否相交

* 相交则存入SameSet中

*/

for(T s : s1){

if(s2.contains(s))

sameSet.add(s);

}

return sameSet;

}

/*

* differentSet方法返回差集

*/

public Set differentSet(Set s1 , Set s2){

differentSet = new HashSet();

/*

* 利用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 hashSet1 = new HashSet<>();

Set 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 ds = new DealSet();

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));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值