Java平台包括一个集合框架。集合是代表一组对象的对象(例如经典的Vector类)。集合框架是用于表示和操作集合的统一体系结构,使集合可以独立于实现细节进行操作。优点是:
- 提供数据结构和算法来减少编程工作;
- 提供高性能的数据结构和算法的实现来提高性能;
- 建立集合来回传递的公共语言使得不相关的API之间可以相互操作;
- 要求您学习多个特定集合API,降低学习API的工作量;
- 不要求您设计特定的集合API,降低实现和设计API的工作量;
- 提供集合的标准接口和操纵它们的算法,提高程序的复用性。
Overview
Tips
- Java容器里只存放对象,对于基本数据类型(int, long, float, double等),将其包装成对象类型后(Integer, Long, Float, Double等)才能放到容器里。很多时候拆包装和解包装能够自动完成。
- 通过泛型机制,Java collection能够容纳任何对象,Java 单继承机制中,所有对象都是Object的子对象,因此容器只需要支持Object对象即可。泛型本身并不需要虚拟机支持,只需要在编译阶段做一下简单的字符串替换即可。JDK 1.4以及之前版本不支持泛型,类型转换需要程序员显式完成。
- 容器存放的是对象的引用,对象存放在堆中。
UML Class Diagram
上图中提供了Queue接口,却没有Stack,Stack的功能已被JDK 1.6引入的Deque取代。
Collection Implementations
Interface | Hash Table | Resizable Array | Balanced Tree | Linked List | HashTable + Linked List |
---|---|---|---|---|---|
Set | HashSet | TreeSet | LinkedHashSet | ||
List | ArrayList | LinkedList | |||
Deque | ArrayDeque | LinkedList | |||
Map | HashMap | TreeMap | LinkedHashMap |
Iterator
只有容器本身清楚内部元素的组织方式,因此只能通过容器本身得到迭代器,每个容器通过内部类的形式实现自己的迭代器。
1 | ArrayList<String> list = new ArrayList<String>(); |
- ArrayList
- LinkedList
- ArrayDeque
- TreeMap & TreeSet
- HashMap & HashSet
- LinkedHashMap & LinkedHashSet
- PriorityQueue
- WeakHashMap
Reference
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章