黑马程序员技术交流社区

标题: Collection接口的Set接口 [打印本页]

作者: 夜空中的星    时间: 2015-1-2 01:10
标题: Collection接口的Set接口
Collection接口的两个子类接口   List和Set接口
Set
        特点:元素无序  是唯一的
        这里的顺序指的是存储和取出的顺序
HashSet:
        不保证元素的迭代顺序   不保证该顺序恒久不变
        它是如何保证的呢:HashSet的底层数据结构是哈希表
                           它依赖两个方法:hashCode()和equals()
                        顺序:先判断hashCode()值是否相同
                                ·如果相同:继续走equals()方法
                                        a.true  说明元素重复,不添加到集合
                                        b.false  说明元素不重复,添加到集合
                                ·不同        直接添加到集合
如何重写hashCode和equals方法呢
        ·hashCode():
                把对象的所有成员变量值相加即可
                如果是基本类型,就加值,如果是引用类型,就加哈希值
        ·equals():
                1.this == obj
                2.!(obj instanceof Student)
                3.强转,所有成员变量的值比较,基本类型用==   引用类型用equals
Collection体现的集合总结
        Collection  (收集,采集)----层次结构中的根接口
特点:
1.Collection 表示一组对象,这些对象也称为 collection 的元素。
2.一些 collection 允许有重复的元素,而另一些则不允许。
3.一些 collection 是有序的,而另一些则是无序的。
4.JDK 不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,
        并在需要最大普遍性的地方操作这些 collection。
两个儿子  list和set
        ·List包括ArrayList ---  底层数据结构是数组,查询快,增删慢
                                线程不安全  但是效率高
                LinkedList ---  底层数据结构是链表 查询慢,增删快
                                线程也不安全  效率也高
                Vector  ---  底层数据结构是数组,查询快,增删慢
                                线程安全  效率低
        ·Set  唯一  包括HashSet和TreeSet
                HashSet   底层数据结构是哈希表,通过hashCode()和equals方法保证元素的唯一性
                TreeSet   底层数据结构是二叉树   通过返回值是否是0,来判断元素是否重复


作者: 赵越海    时间: 2015-1-2 04:14
本帖最后由 赵越海 于 2016-7-8 17:30 编辑

         .
作者: bjuth    时间: 2015-1-2 11:30
lz 有几个问题 拜托解答一下:)

hashCode() : 毕老师基本类型是任意乘个几十的系数,好像尽量避免巧合,不知有用否?如何验证?
Vector  好像是说查询和增删都巨慢,被ArrayList替代,唯一好处是线程同步?不知还有没人用?
作者: 马曦    时间: 2015-1-8 23:48
不错,值得收藏。
作者: 960943877    时间: 2015-1-9 01:26
总结的很不错。赞一个
作者: 以利亚    时间: 2015-1-9 08:59
分享的很好,很受益!
作者: limxing    时间: 2015-1-9 09:15
这个是哪一章节的,
作者: 菜鸟一号    时间: 2015-1-9 09:24
总结得不错
作者: 李增宽    时间: 2015-1-9 23:34
不错,顶一个




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