黑马程序员技术交流社区

标题: java基础之set [打印本页]

作者: 0416-孙磊    时间: 2015-5-10 23:28
标题: java基础之set
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存储自定义对象并遍历
                        针对自定义对象:
                                需求:如果对象的成员都相同,我们就认为是同一个元素。

作者: KK要有光    时间: 2015-5-10 23:47
谢分享。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2