集合
1.Iterable接口
它里边有个iterable()方法。它作用是可迭代的,可遍历的,所有集合元素都是可迭代的,可遍历的。
2.Collection接口
它继承于Iterable接口,继承了iterable()方法,调用该方法获得迭代器对象,对象的类型是Iterator,其中有hasNext()、next()方法等。
3.List、Set是Collcction的子接口
(1)List集合存储元素的特点:有序可重复,存储的元素有下标,
有序实际上是说存进去是这个顺序,取出来还是这个顺序。不是按照大小的顺序;重复是说,可以多次重复存储同一数据。
(2)Set集合存储元素的特点:无序不可重复
无序是说存进去这个顺序,取出来不一定是这个顺序,另外Se集合中元素没有下标;Se集合中的元素还不能重复。
4.ArrayList、LinkedList、Vector是List接口的实现类
(1)ArrayList:.ArrayList底层采用了数组这种数据结构,.ArrayList是非线程安全的。
ArrayList集合初始化容量是10
ArrayList集合底层是Object类型数组Object[]
ArrayLis扩容到原容量的1.5倍
建议给定一个预估计的初始化容量,减少数组扩容次数,这是.ArrayList 集合比较重要的优化策略
数组的优点,检索/查找效率高
数组的缺点,随机增删元素效率低
需要注意的是,在数组末尾添加元素,效率还是很高的
(2)LinkedList:LinkedList集合底层采用了双向链表数据结构
LinkedList是双向链表结构
对于链表数据结构来说,随机增删效率高,检索/查找低
链表中的元素在空间存储上,内存地址不连续
(3)Vector:Vector集合采用了数组这种数据结构,Vector是线程安全的
Vector底层也是数组
初始化容量是10
扩容之后是原来容量的2倍
Vector中所有方法都是线程同步的,都带有synchronized关键字,是线程安全的。
5.HashSet、TreeSet是Set接口的实现类
(1)HashSet:实际上HashSet在new的时候底层实际new了一个HashMap集合,向HashSet集合中存储u元素,实际上是存储到了HashMap中。
HashMap集合是一个哈希表数据结构
(2)TreeSet:TreeSet集合底层实际上是TreeMap,new TreeSet的时候。底层实际new了一个TreeMap集合.向TreeSet集合中存储u元素,实际上是存储到了TreeMap中。
TreeMap集合底层采用了二叉树数据结构
TreeSet集合继承了Set集合无序不可重复的特点,但TreeSet集合中的集合可以自动排序,我们称为可排序集合。放到该集合中的元素是自动按照大小顺序排序的。
6.Map接口
1.Map集合和Collection集合没有关系
2.Map集合以key和value的这种键值对的方式存储元素
3.key和value都是存储java对象的内存地址
4.所有Map集合的key特点:无序不可重复
Map集合的key部分和Set集合存储元素特点相同
7.HashMap、Hashtable、TreeMap是Map接口的实现类
(1)HashMap:HashMap集合底层是哈希表数据结构,是非线程安全的
(2)Hashtable:Hashtable集合底层也是哈希表数据结构,是线程安全的。其中所有方法都带有syndronized关键字,效率低。
(3)TreeMap:TreeMap集合底层数据结构是二叉树。