A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 最初的理想 黑马帝   /  2012-2-7 18:02  /  2087 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 最初的理想 于 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),

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 秦碧 于 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()+"  ");
                }
        }
}
回复 使用道具 举报
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中所有不同的元素

评分

参与人数 1技术分 +1 收起 理由
admin + 1 辛苦了!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马