黑马程序员技术交流社区
标题:
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