容器类的作用是存储对象(持有对象),它们提供不同的方式保存程序中的对象,常用的容器有ArrayList,LinkedList,HashMap等…
Java容器的继承结构
橙色框是最常用的几个容器类。
容器的基本概念
Java容器类类库的用途是保存对象;
容器类被划分为两大类:Collection和Map
Collection
Collection是独立元素的序列,这些元素的存储都必须遵守一定的规则;比如List按照顺序插入,Set不能有重复元素等。
Map
键值对存储。与Collecton不同,Map将对象之间建立了一种关联,也被称为关联数组或者字典。
基本容器
ArrayList
List实现Collection,添加了大量的方法,List有两种类型:ArrayList和LinkedList,它们的底层数据结构分别是可变数组和链表。这意味着在使用List的过程中不需要担心长度的限制,它们是动态变化的。
ArrayList长于随机访问元素,而插入删除的效率较低。
LinkedList
LinkedList相对于ArrayList,它长于插入删除元素,而随机访问效率较低。
除了具备ArrayList的操作之外,LinkedList还包含了可以将其当作栈,队列/双端队列使用的方法。
例如:peek方法常用做获取栈顶元素,在LinkedList中peek方法和getFirst()、element()完全一样,它们都是获取链表首个元素。它们的区别只存在于表为空时:peek方法返回null,而其他两个方法则会抛出NoSuchElementException异常。
public static void main(String[] args) {
LinkedList<Integer> list=new LinkedList<>();
list.add(1);
list.add(4);
list.add(23);
System.out.println(list.toString());
System.out.print(list.getFirst()+"-");
System.out.print(list.element()+"-");
System.out.println(list.peek());
/**输出
* [1, 4, 23]
1-1-1
*/
}
poll方法与removeFirst()和remove()也是一样的,都是移除收个元素,它们的区别和peek()、getFirst()一样。
虽然LinkedList提供了这些方法,但是并不常用,栈/队列有单独的实现。