1. 集合概述
可以储存任意长度,任意引用类型数据的容器
2. 集合框架
-
Collection接口
List、Set的父接口,无序,可重复
常用方法
1. int size(); // 获取集合中对象的个数 2. boolean isEmpty(); // 判断集合是否为空 3. boolean contains(Object o); // 判断某元素是否存在 4. Iterator<E> iterator(); // 迭代器支持遍历 5. boolean add(E e); // 添加 6. boolean remove(Object o); // 删除 7. void clear(); // 清空
-
List接口
有序,可重复
常用方法
1. void add(int index, E element); // 按照索引添加 2. E remove(int index); // 按照索引删除 3. E set(int index, E element); // 修改元素 只有在有泛型时才能调用 4. E remove(int index); // 删除元素 5. int indexOf(Object o); // 获取指定元素的下标 6. int lastIndexOf(Object o); // 获取指定元素最后一次出现的下标
-
Set接口
无序,不重复
-
Map接口
Map接口与Collection接口无关
键值对唯一,键 值都无序,值可重复,键不可重复
常用方法
1. boolean containsKey(Object key); // 判断是否存在某值 2. boolean containsValue(Object value); // 判断是否存在某键 3. V get(Object key); // 通过键获取值 4. V put(K key, V value); // 添加键值对 5. V remove(Object key); //删除键 6. Set<K> keySet(); // 获取所有的键 存入并返回一个Set集合 7. Collection<V> values(); // 获取所有的值,存入并返回一个集合
-
实现类
- List:ArrayList,LinkedList,Vector
ArrayList:数组集合,遍历速度快,但是随机插入或删除数据操作复杂,线程不安全
Vector:数组集合,速度慢,线程安全,随机插入或删除操作复杂
LinkedList:链表集合,遍历速度慢,随机插入或删除操作方便
LinkedList新增方法
1. addFirst(Object) // 头部添加 2. addLast(Object) // 尾部添加 3. removeFrist(Object) // 头部删除 4. removeLast(Object) // 尾部删除 5. getFrist(Object) // 返回链表头
-
getLast(Object) // 返回链表尾
2. Set:HashSet,TreeSet 1. HashSet可以存入null 2. TreeSet需要排序 1. ````java // 自然排序 1. 实体类实现Comparable 2. 重写compareTo方法 负数倒序,正数正序
2. ````java // 排序器排序 1. 创建排序器类 实现Comparator接口 2. 重写compare方法 ```` > List,Collections中的sort方法也可以用来排序,比较方便
-
Map:HashMap,TreeMap,Hashtable
- HashMap 键,值 无序,键值对唯一,键不可重复,值可以重复,线程不安全,可以存null
- Hashtable 线程安全,不可以存null
-
算法类Collections
java.util.Collections有许多实用的方法
-
集合泛型
JDK5中提出泛型
优点:提高代码安全性
-
Queue类
队列,先进先出,它的实现类有LinedList
抛出异常 返回特殊值 插入 add(e) offer(e) 移除 remove() poll() 检查 element() peek() -
Stack类
public class Stack extends Vector{}
Stack 类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作
1. Vector初始容量10,2倍扩容
2. ArrayList初始容量10,1.5倍扩容
3. String,包装类都重写了compareTo方法
4. HashMap初始容量16,满75%自动扩容2倍
5. Tree有关的集合都不能存null,Hashtable安全性问题不能存null