集合主要脉络 : Java 集合大的分类为两类 Collection 和 Map , Collection 下有 List , Set , Queue 三个主要接口 ;
List 接口 : List 集合特点 , ① 元素排列有序 , ② 元素可重复 ;
Vector 与 ArrayList 的区别是线程是否安全 , Vector 以降低效率的代价换取线程安全 ; ArrayList 与 LinkedList 底层实现不同 , 一个是数组实现的 , 一个是链表实现的 , 如果应用环境中查询比较多 , 使用 ArrayList , 如果应用环境中增删比较多使用 LinkedList ;
1. Set 接口 : Set 集合特点是元素不可重复 ;
如果要求集合中的元素唯一 , 那么使用 Set 集合 , 如果不需要排序就使用 hashSet , 如果需要排序使用 TreeSet 或 LinkedHashSet ;
2. 三种集合的使用场景 : HashSet 用于存储不能重复的数据 , TreeSet 用于排序 , LinkedHashSet 有先进先出的功能 ;
3. 插入元素速度对比 : HashSet > LinkedHashSet > TreeSet ;
4. 关于元素的空值处理 : HashSet 和 LinkedHashSet 允许有空值 , TreeSet 如果出现空值就会抛出空指针异常 ;
1. Map 接口的集合实现 : HashMap ( 子类 LinkedHashMap ) , TreeMap , HashTable ;
2. 排序分析 : HashMap 和 HashTable 是无序的 , TreeMap 是有序的 ;
3. 线程安全 : HashMap 是线程不安全的 ; HashTable 是线程安全的 , 其方法都是 synchronized 修饰的 ; 因此 HashMap 效率要比 HashTable 效率要高 ;
Collection 接口定义了集合的基本操作 , 如下 :
//I. 添加操作
//1. 添加单个元素
boolean add(E e)
//2. 将集合中的元素都添加到本集合中
boolean addAll(Collection<? extends E> c)
//II. 删除操作
//1. 删除单个元素
boolean remove(Object o)
//2. 删除子集合 c 中的元素
boolean removeAll(Collection<?> c)
//3. 保留本集合中含有的集合 c 中的元素 , 其它元素删除 ( 保留两集合的交集 )
boolean retainAll(Collection<?> c)
//4. 清除所有元素
void clear()
//III. 获取操作
//1. 获取迭代器
Iterator<E> iterator()
//2. 获取哈希码
int hashCode()
//3. 获取集合大小
int size()
//IV. 数组转换操作
//1. 返回包含该集合所有元素的数组
Object[] toArray()
//2. 返回包含该集合所有元素的数组, 并指定数组元素类型
<T> T[] toArray(T[] a)
//V. 判定操作
//1. 是否包含某元素
boolean contains(Object o)
//2. 是否包含某集合中的所有元素
boolean containsAll(Collection<?> c)
//3. 是否相等
boolean equals(Object o)
//4. 集合是否为空 , 如果为空返回 true
boolean isEmpty()