设计一个集合类set,创建两个对象,利用math.random()产生两个类中的元素,最后对他们实施“交”“并”?
本人是一个java新手,这道题是书上的一个练习题目,我想不出来,希望能给我点提示。还有就是想请教各位高手们,java是要怎么学,我觉得我现在好像缺少方法了???请指教!!!

解决方案 »

  1.   

    可以给你提供一个思路:
    假设这两个类分别为A和B,在此我们再创建一个类叫C。
    求交集:建立一个双层的for循环,在A中取第一个数,然后再B中查找是否有相同的,如果有,将该数存入到C中,依次类推,知道将A中的数遍历完,这样的话C中的数据就是最终的交集。
    求并集:现将A中的所有数据导入到C中,然后再从B中一个个取数据,在放入C之前进行判断,如果C中没有该数再放入,知道将B中的所有数都判断完。最终C中的数据就是A和B的并集。我提供的思路效率不是很高,会浪费一些时间,但是能解决问题。
    我想告诉你的是:编程一定要动脑子,不要指望别人给你提供确定的方法,更不要指望别人把完整的代码都给你,这样不利于你的学习。应该勤动脑子,自己想出一套方案,然后再一点点去实现。最后再参考一下别人的方法,看看有没有借鉴之处。希望能解决你的问题。
      

  2.   

    java是要怎么学,我觉得我现在好像缺少方法了?
    别人给你说的都是理论的,呵呵,还是一样的啊。和学别的东西都一样!要说什么方法,就是实践出真知!
      

  3.   

    交集意思就是排重,再new个set就是,set中不允许有重复元素,把那俩set中的数据都add到另一个set中就ok了,并的话取出来都放到list中就行了,list允许重复元素
      

  4.   

    随机填充数值就不用写了吧?
    用Set的2个函数就可以搞定,去看看api吧
    A,B :
    并: A.addAll(B)
    交: 
    Set A = new HashSet();
            Set B = new HashSet();
            Iterator it = B.iterator();
            Set C = new HashSet();
            while(it.hasNext()){
                Object o = it.next();
                if(A.contains(o)){
                    C.add(o);
                }
            }
      

  5.   

    学java可以看马士兵的视频,很有帮助。
      

  6.   


    import java.util.*;public class Test{
    private static Random rand = new Random(20);
    public static Set<Integer> create(int sz) {
    Set<Integer> set = new HashSet<Integer>();
    for(int i = 0; i < sz; i++)
    set.add(rand.nextInt(10));
    return set;
    }
    public static Set<Integer> union(Set<Integer> s1, Set<Integer> s2) {
    Set<Integer> set =new HashSet<Integer>(s1);
    set.addAll(s2);
    return set;
    }
    public static Set<Integer> intersection(Set<Integer> s1, Set<Integer> s2) {
    Set<Integer> set =new HashSet<Integer>(s1);
    set.retainAll(s2);
    return set;
    }
    public static void main(String[] args) {
    Set<Integer> set1 = create(10);
    Set<Integer> set2 = create(10);
    System.out.println(set1.toString());
    System.out.println(set2.toString());
    System.out.println(union(set1, set2));
    System.out.println(intersection(set1, set2));
    }
    }
      

  7.   

    建议看北京尚学堂的视频,从j2se的看起,做做j2se的项目,完了学数据库,再学html、css、JavaScript、jsp/servlet,也就是web的入门,之后做做web项目,学通了就学框架,这期间会穿插很多东西,例如xml、uml、log4j、jUnit等等,最后学设计模式和面向对象的分析。计算机的东西是很多的,不要学死,也不要想着学完,最重要的是学会解决问题的方法。开始肯定要模仿别人的代码,不断模仿,多看,看完一定要自己写几遍,只有能写出来了的,才是自己的东西,建议开始时多背点东西,包括一些常用类啊、一些概念性的东西,因为背多了自己就熟悉了。  尚学堂的视频:http://www.verycd.com/topics/93279/  
    数据库的要另找,网上能找到尚学堂的Oracle,马士兵讲的,挺不错的!  
    shopping这个项目也有从头带到尾的,也是马士兵的,要找找  
    做项目是很重要的,从简单的做起,慢慢体会其中的分析与设计  学java还是从视频入门的好,千万不要一开始就去看《Thinking in java》,吃力不讨好,学到web时可以看看张孝祥的《  
    深入体验JAVA Web开发内幕——核心基础》,写的很详细,不过他的视频一般,  
    JavaScript就看《JavaScript高级程序设计》,html比较简单,css也比较简单,不过css布局因人而异,有人觉得很好理解,有人觉得很难,搞个Dreamweaver多练练也就熟悉了。设计模式可以看《大话设计模式》,入门很好!  补充一点:张孝祥的那本《  
    深入体验JAVA Web开发内幕——核心基础》真的不错,而JavaScript的就不行,不够细,而且太多其他内容(html、css的,而且写的一般),他写的那本java的书就没看过,不知道怎样,另外,他的视频实在不好,在念书一样。  
    个人认为,还是马士兵的视频好,讲的很好,而且还讲了很多学习的方法,很适合入门,还有,不要一下子下一大堆的视频,不要把什么孙鑫、张孝祥、马士兵的全下,你是看不完的!你可以先下他们的第一集,看看谁的讲课方式适合自己,再做定夺,不过个人十分推荐马士兵的,真的讲的很好!!