黑马程序员技术交流社区
标题:
关于散列集合算法的问题!
[打印本页]
作者:
最初的理想
时间:
2012-2-7 18:02
标题:
关于散列集合算法的问题!
本帖最后由 最初的理想 于 2012-2-8 21:30 编辑
有两个集合,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),
作者:
秦碧
时间:
2012-2-7 18:36
本帖最后由 秦碧 于 2012-2-7 18:37 编辑
import java.util.*;
class HashSetTest
{
public static void main(String[] args)
{
HashSet hsa=new HashSet();
hsa.add(1);
hsa.add(2);
hsa.add(3);
hsa.add(4);
HashSet hsb=new HashSet();
hsb.add(1);
hsb.add(2);
hsb.add(5);
hsb.add(6);
HashSet hs=new HashSet();
hs=combine(subtract(hsa,hsb),subtract(hsb,hsa)); //(A-B)U(B-A)
print(hs);
}
public static HashSet subtract(HashSet hsa,HashSet hsb) //hsa-hsb
{
HashSet hs=new HashSet();
for (Iterator it=hsa.iterator();it.hasNext() ; )
{
Object obj=it.next();
if (!hsb.contains(obj))
{
hs.add(obj);
}
}
return hs;
}
public static HashSet combine(HashSet hsa,HashSet hsb) //hsa U hsb
{
HashSet hs=new HashSet();
hs.addAll(hsa);
for (Iterator it=hsb.iterator();it.hasNext() ; )
{
Object obj=it.next();
if (!hs.contains(obj))
{
hs.add(obj);
}
}
return hs;
}
public static void print(HashSet hs) //遍历打印
{
for (Iterator it=hs.iterator();it.hasNext() ; )
{
System.out.print(it.next()+" ");
}
}
}
作者:
秦碧
时间:
2012-2-7 18:51
import java.util.*;
class HashSetTest2
{
public static void main(String[] args)
{
HashSet hsa=new HashSet();
hsa.add(1);
hsa.add(2);
hsa.add(3);
hsa.add(4);
HashSet hsb=new HashSet();
hsb.add(1);
hsb.add(2);
hsb.add(5);
hsb.add(6);
HashSet hs=function(hsa,hsb);//(A-B)U(B-A)
print(hs);
}
public static HashSet function(HashSet hsa,HashSet hsb)//(A-B)U(B-A)方法
{
HashSet hs=new HashSet();
hs.addAll(hsa);
for (Iterator it=hsb.iterator();it.hasNext() ; )
{
Object obj=it.next();
if (!hs.contains(obj))
{
hs.add(obj);
} else
hs.remove(obj);
}
return hs;
}
public static void print(HashSet hs)//遍历打印
{
for (Iterator it=hs.iterator();it.hasNext() ; )
{
System.out.print(it.next()+" ");
}
}
}
这样会好一点
就是求A和B中所有不同的元素
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2