基本概念
Java容器的主要用途就是用来保存对象,根据对象保存形式的不同,可以将其分为以下两个概念:
1. Collection:保存独立的对象集合,常见的有:List、Set、Queue和已经过时Stack;
2. Map:利用“键值对”来保存对象的容器。
常见的容器介绍
List
List可以将元素保存在特定的序列中。主要有两种类型的List:
ArrayList
它常用于元素的随机访问,但在其中插入和移除元素时较慢。
LinkedList
它通过链表实现存储,提供了优化的顺序访问,所以在对其进行插入和移除操作时相对前者更快,但其在随机访问上却相对较慢。
LinkedList还添加了可以使其用作栈、队列或双端队列(Queue)的方法。
根据两者实现上的不同,很容易根据实际的需要选择使用哪种实现。
Stack
如果你正在考虑使用何种机制来存储对象,则请不用考虑用Stack来实现。
Set
Set不保存重复的元素。有以下几种实现:
HashSet
Set常用来做查找操作,而HashSet专门对快速查找进行了优化,因此通常第一考虑的都是使用HashSet来作为Set的实现。
TreeSet
TreeSet对插入其中的元素进行了升序排序,所以在性能上会比HashSet较慢。
LinkedHashSet
它按照插入的顺序保存元素。
Map
将对象映射到其他对象的能力是Map的主要功能。
HashMap
专门用于快速访问
TreeMap
保证Key始终处于升序排列状态,所以没有前者快。
LinkedHashMap
保持元素插入的顺序不变,同时也通过散列提供了快速访问的能力。
Queue
队列的实现有LinkedList提供支持。
下图是Java容器相互关系的简图:
这里只介绍了各个容器的优缺点,但没有说明为什么。将在后期进行说明。