Java集合大致可分为Set、List和Map三种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合。Java 5之后,增加了Queue体系集合,代表一种队列集合实现。
Java集合框架主要由Collection和Map两个根接口及其子接口、实现类组成。本文仅探讨Collection接口及其子接口、实现类。
1. Collection接口继承树
2. Collection接口基本操作
3. Collection的遍历
4. Set子接口
4.1 HashSet类
4.2 LinkedHashSet类
4.3 SortedSet接口及TreeSet实现类
4.4 EnumSet类
5. List子接口
5.1 ArrayList和Vector实现类
5.2 LinkedList类
6. Queue子接口
6.1 PriorityQueue类
6.2 Deque子接口与ArrayDeque类
6.3 实现List接口与Deque接口的LinkedList类
7. 各种线性表选择策略
参考:Java:集合,数组(Array)、集合(List/Set/Queue)、映射(Map)等的迭代遍历,比如:ArrayList,LinkedList,HashSet,HashMap
Set集合不允许包含相同的元素,而判断两个对象是否相同则是根据equals方法。
HashSet类是Set接口的典型实现类。特点:
LinkedHashSet类也是根据元素的hashCode值来决定元素的存储位置,但它同时使用链表维护元素的次序。与HashSet相比,特点:
TreeSet类是SortedSet接口的实现类。因为需要排序,所以性能肯定差于HashSet。与HashSet相比,额外增加的方法有:
可以定义比较器(Comparator)来实现自定义的排序。默认自然升序排序。
EnumSet类是专为枚举类设计的集合类,EnumSet中的所有元素都必须是指定枚举类型的枚举值。《Effective Java》第32条,用EnumSet代替位域,示范:
// EnumSet - a modern replacement for bit fields - Page 160 import java.util.*; public class Text { public enum Style { BOLD, ITALIC, UNDERLINE, STRIKETHROUGH } // Any Set could be passed in, but EnumSet is clearly best public void applyStyles(Set