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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜空中的星 中级黑马   /  2015-1-2 01:10  /  1872 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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,来判断元素是否重复

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

8 个回复

正序浏览
不错,顶一个
回复 使用道具 举报
总结得不错
回复 使用道具 举报
这个是哪一章节的,
回复 使用道具 举报
分享的很好,很受益!
回复 使用道具 举报
总结的很不错。赞一个
回复 使用道具 举报
不错,值得收藏。
回复 使用道具 举报
lz 有几个问题 拜托解答一下:)

hashCode() : 毕老师基本类型是任意乘个几十的系数,好像尽量避免巧合,不知有用否?如何验证?
Vector  好像是说查询和增删都巨慢,被ArrayList替代,唯一好处是线程同步?不知还有没人用?
回复 使用道具 举报
本帖最后由 赵越海 于 2016-7-8 17:30 编辑

         .
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马