Java容器分为两大阵营:Collection和Map
Collection:主要是单个元素的集合,由List、Queue、Set三个接口区分不同的集合特征,然后由下面的具体的类来实现对应的功能。
Map:有一组键值对的存储形式来保存,可以用键对象来查找值。
1.Collection接口的几个子接口 1.1 ListList的特点就是存储的元素是可以重复的。List接口在Collection的基础上增加了很多的方法。
List主要分为ArrayList和LinkedList,前者底层是使用数组实现的List,后者是使用链表实现的List。
Vector是一个已经被弃用的类,因为他是线程同步的,而我们平时使用的时候都是非同步的,使用同步的坏处就是会在一个记录上加锁,防止多个程序访问同一条数据导致数据不同步。这样会导致访问速度变慢。
Stack是满足“后进先出”规则的容器,注意LinkedList可以实现所有的栈功能。
常用函数
List下的函数:
add():在末尾添加一个元素
clear():清空
size():返回长度
isEmpty():是否为空
get(i):获取第i个元素
set(i, val):将第i个元素设置为val
Stack下的函数:
函数:
push():压入元素
pop():弹出栈顶元素,并返回栈顶元素
peek():返回栈顶元素
size():返回长度
empty():栈是否为空
clear():清空
接口:java.util.Queue<>
实现:
java.util.LinkedList<>:双链表
java.util.PriorityQueue<>:优先队列(需要插入的类实现Comparable接口),或者自己创建PriorityQueue时new Comparator
默认是小根堆,大根堆写法:new PriorityQueue<>(Collections.reverseOrder())
函数:
add():在队尾添加元素
remove():删除并返回队头
isEmpty():是否为空
size():返回长度
peek():返回队头
clear():清空
set代表的是数学上的集合的意思,所以set中的元素不可以重复。
HastSet底层是使用散列函数,在查询的方面有优化
TreeSet底层使用的是红黑树
接口:java.util.Set
实现:
- java.util.HashSet:哈希表
- java.util.TreeSet:平衡树
函数:
add():添加元素
contains():是否包含某个元素
remove():删除元素
size():返回元素数
isEmpty():是否为空
clear():清空
java.util.TreeSet多的函数:
ceiling(key):返回大于等于key的最小元素,不存在则返回null
floor(key):返回小于等于key的最大元素,不存在则返回null
HashSet不维护任何元素顺序,而TreeSet元素默认按升序排序
2.Map接口的几个实现类接口:java.util.Map
实现:
java.util.HashMap
java.util.TreeMap
函数:
put(key, value):添加关键字和其对应的值
get(key):返回关键字对应的值
containsKey(key):是否包含关键字
remove(key):删除关键字
size():返回元素数
isEmpty():是否为空
clear():清空
entrySet():获取Map中的所有对象的集合
Map.Entry
getKey():获取关键字
getValue():获取值
java.util.TreeMap
ceilingEntry(key):返回大于等于key的最小元素,不存在则返回null
floorEntry(key):返回小于等于key的最大元素,不存在则返回null
TreeMap按照关键字排序,key不能为null,value可以为null
HashMap不按关键字排序



