Java修炼——容器体系框架总结

容器有俩大接口Collection接口(无序,不唯一)和Map接口
Collection接口有俩个子接口分别是List和Set。
List接口特点是有序但是不唯一,她有三个子接口分别是:ArrayList,Vector以及LinkList
ArrayList我们在前面文章中有详细介绍。在这里我们补充几点。ArrayList底层是数组。由于她是继承List接口。所以她也是有序但是不唯一。
Vector的的底层也是数组,他和ArrayList的方法类似。

在这里我们强调一下ArrayList和Vector的区别:
ArrayList是jdk1.2版本出来的。安全性低,线程不同步,扩容0.5倍,是在添加一个元素的时候初始化容量10
Vector是jdk1.0版本的,安全性高,线程是同步的(被synchronize的修饰),扩容1.0倍,是在调用无参构造方法的时候调用,初始化容量10。

List是比较特殊的,她不是数组,而是一个链表,链表又有单链表和双链表。链表的特点就是她有前驱和后继。她是利用前驱去连接前一个元素,后继是连接后一个元素。这样他的增删改的速度就很快,但是相同的查询的速度就很慢。

Set接口也有俩个子接口,分别是:TreeSet和HashSet。相同的,因为他俩都是继承的Set因此他俩也都是无序,但是TreeSet是唯一。TreeSet的底层是红黑树,HashSet的底层是哈希表。HashSet还有一个子接口LinkHashSet,这是一个有序的HashSet,也算是将HashSet完善一下。

HashSet原理:在存储自定义对象时,必须重写hashcode()以及equals()方法。
1.调用HashCode方法计算哈希吗值
2.根据y=k(x)计算存储位置,x为哈希码值,y是存储位置
3.如果该位置上面没有元素,则直接添加,如果有元素,则调用equals()进行比较,要是内容相同则不需要添加,如果 内容不同则需要在后面加上链表,当链表结点大于8时,则将链表转为红黑树,目的是为了提高遍历速度
Java修炼——容器体系框架总结_第1张图片
TreeSet:在存储自定义对象时,要求必须具备比较规则,可以使内部比较器Comparable接口,也可以使用外部比较器Comparator接口。

遍历集合的时候都可以用加强for循环还有使用迭代器去循环。

Java修炼——容器体系框架总结_第2张图片

你可能感兴趣的:(Java学习,不忘初心,方得始终,Java_容器体系框架总结)