一、集合简介
1.1 集合存在的意义:存储并操作对象。
1.2 数组和集合的区别:
1. 数组的长度固定,而集合的长度可变; 2. 数组既可以存储引用数据类型又可以存储基本数据类型,集合只能存储引用数据类型。
二、Collection的体系结构
图2-1 collection体系结构图
List集合:
特点:存储顺序和取出顺序一致,集合内的元素可以重复。
常用实现类:
1.ArrayList:底层由数组实现,默认的初始容量为10,每次扩容为原来的1.5倍,插入删除较慢,查找较快,线程不安全。
2.LinkedList:底层由双向链表实现,可作为栈,队列来使用,插入删除极快,查找比较慢,线程不安全。
3.Vector:底层由数组实现,默认的初始容量为10,负载因子为1,每次扩容为原来的2倍,插入删除较慢,查找较快,但都慢于ArrayList,线程安全。
Set集合:
1.特点:集合内的元素不可重复。
2.常用实现类
1.HashSet:底层实现是一个HashMap(保存数据),默认初始容量为16,负载因子为0.75(当集合内元素个数 超过容量长度的0.75倍时,进行扩容),每次扩容为原来的2倍,不可以保证集合内的元素有序。 2.TreeSet:底层数据结构为红黑树,可以保证集合内的元素有序。 3.LinkedHashSet:底层数据结构为哈希表加链表,可以保证集合内的元素与插入顺序的一致性。
Queue:
1.特点:插入集合内的元素遵循FIFO原则。
2.常用实现类:
1.PriorityBlockingQueue :一个由优先级堆支持的无界优先级队列,实质上维护了一个有序列表。插入的元素根据它们的天然排序(通过其 java.util.Comparable 实现)或者根据传递给构造函数的 java.util.Comparator 实现来定位。