趁阳光正好,趁微风不燥,趁现在的双手还能拥抱彼此,趁我们还能呼吸,去见你想见的人,做你想做的事。
1.继承关系
容器主要包含Collection和Map两种类型,Collection存储着对象的集合,而Map存储着键值对(两个对象)的映射关系。
容器类框架图:
- 虚线方框为接口,实线方框为类。
- 虚线箭头为实现,实线箭头为继承。
Tip:
依赖关系:是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联。A 类依赖于B 类主要有三种形式:
- A 类是 B 类方法的局部变量;
- A 类是 B 类方法的参数;
- A 类对B 类静态方法的调用来访问 B类中的某些方法来完成一些职责。
2.Collection
2.1 List
List以线性方式存储元素,集合中可以存放重复对象,元素有序。常用实现类:
- ArrayList:基于动态数组实现,支持随机访问,随机访问元素快,增删元素慢。
- Vector:Vector与ArrayList相似。但Vector的方法是线程安全的,而ArrayList的方法不是,由于线程的同步必然要影响性能,因此ArrayList的性能比Vector好。
- LinkedList:基于双向链表实现,只能顺序访问,插入、删除元素快。
- Stack:栈,继承Vector,特点是先进后出(FILO)。
2.2 Set
Set不保存重复的元素。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。最常用实现类:
-
TreeSet:基于红黑树实现,支持有序性操作,TreeSet查找的时间复杂度为 O(logN)。
-
HashSet:基于哈希表实现,支持快速查找,HashSet查找的时间复杂度为 O(1),但不支持有序性操作。
-
LinkedHashSet:具有 HashSet 的查找效率,并且内部使用双向链表维护元素的插入顺序。
2.3 Queue
JDK1.5在Collection接口下新增了Queue接口,用以支持队列的常见操作。Queue:队列,先进先出(FIFO)。
- PriortyQueue:基于堆结构实现,可以用它来实现优先队列。
3.Map
-
TreeMap:基于红黑树实现。
-
HashMap:基于哈希表实现。
-
HashTable:和 HashMap 类似,但它是线程安全的,这意味着同一时刻多个线程同时写入 HashTable 不会导致数据不一致。它是遗留类,不应该去使用它,而是使用 ConcurrentHashMap 来支持线程安全,ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁。
-
LinkedHashMap:是HashMap的一个子类,使用双向链表来维护元素的顺序。
4.迭代器
-
Iterator迭代器:Iterator迭代器是一个用来遍历并选择序列中的对象。只能单向移动。
-
ListIterator迭代器:继承自Iterator。只能用于各种List类的访问。可以双向移动。
5.工具类
- Arrays:提供各种静态方法,方便对数组进行操作。
- Collections:提供各种静态方法,方便对集合进行操作。