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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 0416-孙磊 中级黑马   /  2015-5-10 23:28  /  189 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1:Set
        (1)Set的特点:
                元素无序,唯一。
        注意:这里的顺序是指存储和取出顺序。

2:HashSet
        (1)HashSet:不保证元素的迭代顺序。并且,不保证该顺序恒久不变。
        (2)怎么保证的呢?
                HashSet底层数据结构是哈希表。
                它依赖两个方法:hashCode()和equals()
                顺序:
                        首先,判断hashCode()值是否相同。
                                相同:
                                        继续走equals()方法,根据其返回值:
                                                true:说明元素重复,不添加到集合。
                                                false:说明元素不重复,添加到集合。
                                不同:直接添加到集合。
        (3)怎么重写hashCode()和equals()方法呢?
                hashCode():
                        把对象的所有成员变量值相加即可。
                        如果是基本类型,就加值。如果是引用类型,就加哈希值。
                equals():
                        A:this==obj
                        B:!(obj instanceof Student)
                        C:所有成员变量的值比较。基本类型用==,引用类型用equals()。

                如果不会,自动生成。
        (4)案例:
                HashSet存储字符串并遍历
                HashSet存储自定义对象并遍历
                        针对自定义对象:
                                需求:如果对象的成员都相同,我们就认为是同一个元素。

1 个回复

倒序浏览
谢分享。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马