苟有恒,何必三更眠五更起;最无益,莫过一日曝十日寒
1. Collection集合接口
一般不会直接使用此接口
方法 | 类型 | 说明 |
---|---|---|
public boolean add(E e) | 普通 | 向集合保存数据 |
public boolean addAll(Collection<? extend E>c) | 普通 | 追加一组数据 |
public void clear() | 普通 | 清空集合,让根节点为空,同时执行GC处理 |
public boolean contains(Object o) | 普通 | 查询数据是否存在,需要equals()方法支持 |
public boolean remove(Object o) | 普通 | 数据删除,需要equals()方法支持 |
public int size() | 普通 | 获取数据长度 |
public Object[] toArray() | 普通 | 将集合变为对象数组返回 |
public Iterator |
普通 | 将集合变为Iterator接口 |
public boolean isEmpty() | 普通 | 判断集合是否为空 |
2. List
允许保存重复元素数据,是Collection集合接口的子接口,插入顺序排序
1 | public interface List<E> extends Collection<E> { |
方法 | 类型 | 说明 |
---|---|---|
public E get(int index) | 普通 | 取得指定索引位置上的数据 |
public E set(int index,E element) | 普通 | 修改指定索引位置上的数据 |
public ListIterator |
普通 | 为ListIterator接口实例化 |
public static |
普通 | 将数据转为List集合 |
public default void forEach(Consumer<? super T> action) | 普通 | 使用forEach结合消费型接口输出 |
ArrayList 接口实现类
实现了List接口,继承了AbstractList抽象类, 数组, 随机访问, 没有同步, 线程不安全,查
1 | public class ArrayList<E> extends AbstractList<E> implements List<E>,RandomAccess,Cloneable,Serializable { |
LinkedList 接口实现类
实现了List接口,继承了AbstractSequentialList抽象类,链表结构, 插入删除, 没有同步, 线程不安全
1 | public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>,Deque<E>,Cloneable,Serializable { |
Vector 接口实现类
实现了List接口,继承了AbstractList抽象类,数组,synchronized 同步, 线程安全,是早期集合,查询
1 | public class Vector<E> extends AbstractList<E> implements List<E>,RandomAccess,Cloneable,Serializable { |
- Stack栈
栈是有序的数据结构,采用先进后出FILO存储模式,当栈中没有数据保存时,出栈操作会出现空栈异常(EmptyStackException)
1 | public class Stack<E> extends Vectors<E>{ |
方法 | 类型 | 说明 |
---|---|---|
public boolean empty() | 常量 | 测试栈是否为空 |
public E peek() | 常量 | 查看栈顶,但不删除 |
public E pop() | 常量 | 出栈,同时删除 |
public E push(E item) | 普通 | 入栈 |
public int search(Object o) | 普通 | 在栈中查找 |
3. Set
不允许保存重复数据,使用hash()算法函数生成一个int类型hashCode散列值,然后和所存储的hashCode进行比较,不能根据索引获取元素(不确定)
1 | public interface Set<E> extends Collections<E> { |
HashSet
使用hash表(数组)存储元素,元素无顺序,线程不安全
1 | public class HashSet<E> extends AbstractSet<E> implements Set<E>,Cloneable,Serializable { |
LinkedHashSet
链表维护元素的插入次序,哈希表维护元素唯一性
TreeSet
底层实现为二叉树,元素排好序,不允许放入null值
1 | public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>,Cloneable,Serializable { |
4. Map
接口 键值对的集合 (双列集合),不是继承Collection接口
方法 | 类型 | 说明 |
---|---|---|
Object put(Object key,Object value) | 普通 | 将指定key-value添加到(或修改)当前map对象中 |
void putAll(Map m) | 普通 | 将m中的所有key-value对存放到当前map中 |
Object remove(Object key) | 普通 | 移除指定key的key-value对,并返回value |
void clear() | 普通 | 清空当前map中的所有数据 |
Object get(Object key) | 普通 | 数据删除,需要equals()方法支持 |
boolean containsKey(Object key) | 普通 | 获取数据长度 |
boolean containsValue(Object value) | 普通 | 将集合变为对象数组返回 |
int size() | 普通 | 将集合变为Iterator接口 |
boolean isEmpty() | 普通 | 判断集合是否为空 |
Hashtable 接口实现类
同步, 线程安全
1 | public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>,Cloneable,Serializable { |
HashMap 接口实现类
没有同步, 线程不安全
1 | public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>,Cloneable,Serializable { |
LinkedHashMap
双向链表和哈希表实现
1 | public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> { |
WeakHashMap
强引用,GC回收弱引用
TreeMap
红黑树对所有的key进行排序
1 | public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>,Cloneable,Serializable { |
- IdentifyHashMap
5. Iterator
集合的输出四种方式:Iterator,ListIterator,Enumeration,foreach,Itertor是专门的迭代输出接口
方法 | 类型 | 说明 |
---|---|---|
public boolean hasNext() | 普通 | 判断是否有下一个值 |
public E next() | 普通 | 取出当前元素 |
public default void remove() | 普通 | 移除当前元素 |
6. Enumeration
方法 | 类型 | 说明 |
---|---|---|
public boolean hasMoreElements() | 普通 | 判断是否有下一个元素 |
public E nextElement() | 普通 | 取出当前元素 |
7. ListIterator
方法 | 类型 | 说明 |
---|---|---|
public boolean hasPrevious() | 普通 | 判断是否有前一个元素 |
public E previous() | 普通 | 取出前一个元素 |
8. Queue
队列是一种先进先出FIFO的线性数据结构
方法 | 类型 | 说明 |
---|---|---|
public boolean add(E e) | 普通 | 向队列尾部添加数据,数据添加成功返回true,如果队列已满,则抛出一个IIIegaIStateEepeplian异常 |
public boolean offer(E e) | 普通 | 添加一个元素并返回true,如果队列已满,则返回false |
public E remove() | 普通 | 移除并返回队列头部的元素,如果队列为空,则抛出一个NoSuchElementException |
public E peek() | 普通 | 返回队列头部的元素,如果队列为空,则返回null |
public E poll() | 普通 | 移除并返问队列头部的元素,如果队列为空,则返回null |
9.总结
还有许多的类集框架没有写出来,欢迎大家总结。