版权声明:转载请注明出处 https://blog.csdn.net/lvhonglei1987/article/details/88703677
文章目录
Collection
Collection,常被叫做集合,在Java面试的时候,是必须考的,今天就说说我印象中的Collection,集合中常用的是list和set,list和set下面也有具体的实现类。Map不继承也不实现Collection,所以,Map不是集合类。
list
List也是一个接口,我们最常用的是List下面的ArrayList和LinkedList,Vector平时基本不会用。
ArrayList
- ArrayList的数据结构是Object数组
- ArrayList是非线程安全的
- ArrayList数组初始化有两种方式,
第一种:
第二种:List list = new ArrayList(10);
List<String> list = new ArrayList(); list.add("s");
- ArrayList数组在没有设置数组长度的时候,默认数组长度是10
/** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10;
- ArrayList数组在超过当前最大容量的时候,会扩容,容量是原来的1.5倍
- ArrayList数组建议设置数组长度,避免数组扩容带来的性能损耗
- ArrayList数组不适合随机插入和删除,适合随机访问
- ArrayList数组插入和删除的性能和位置有关系
Vector
- Vector与ArrayList数据结构相同
- Vector是线程安全的,应为它的方法上添加了
synchronized
关键字 - Vector可以设置数组长度,也可以设置扩容阈值
LinkedList
- LinkedList数据结构是双向链表
- LinkedList是非线程安全的
- LinkedList适合随机插入和删除,时间复杂度为O(1)
- LinkedList不适合随机查询,因为需要遍历,不能根据下标来定位
Set
Set下面有HashSet,LinkedHashSet,TreeSet
HashSet
HashSet集合类
LinkedHashSet
集合类
TreeSet
树
Map
Map是键值对结构
HashMap
HashMap
Hashtable
已弃用
LinkedHashMap
双向链表的散列表
ConcurrentHashMap
安全的map
TreeMap
树