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