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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Echo0912 中级黑马   /  2015-9-13 22:24  /  175 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

特点:无序(存取的顺序不一致),唯一。
        //  a  b  c  d  e f g
        public boolean add(Object obj);   //往set集合中添加重复元素的时候,返回值是false。

        遍历:
                1、迭代器。
                2、增强for。


        HashSet:
                案例:存储字符串并遍历
                          存储自定义对象并遍历。

                HashSet是如何保证元素唯一性的?
                        依赖于两个方法:hashCode(),equals()。

                        set.add(new Person("张三",23));  

                        原理:
                                A:调用要添加的对象的hashCode()方法,计算出该对象的哈希值。
                                B:去集合中找是否有元素的哈希值和要添加的元素的哈希值相同。
                                        如果不同:直接把该元素存到集合中。
                                        如果相同:调用equals()方法去比较各个属性的值。
                                                如果都相同,不添加,否则,就把该元素添加到集合中。


                        问题1:hashCode()方法没有重写,equals()没有执行。    ???

        LinkedHashSet:
                有序,唯一

注意:一个类可以有多个对象,但是一个类的字节码文件对象只有一个。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马