类集框架(集合)

苟有恒,何必三更眠五更起;最无益,莫过一日曝十日寒

1. Collection集合接口

一般不会直接使用此接口

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() 普通 将集合变为Iterator接口
public boolean isEmpty() 普通 判断集合是否为空

2. List

允许保存重复元素数据,是Collection集合接口的子接口,插入顺序排序

1
2
public interface List<E> extends Collection<E> {
}
List集合接口扩充的方法
方法 类型 说明
public E get(int index) 普通 取得指定索引位置上的数据
public E set(int index,E element) 普通 修改指定索引位置上的数据
public ListIterator listIterator() 普通 为ListIterator接口实例化
public static List of (E…elements) 普通 将数据转为List集合
public default void forEach(Consumer<? super T> action) 普通 使用forEach结合消费型接口输出
  • ArrayList 接口实现类

    实现了List接口,继承了AbstractList抽象类, 数组, 随机访问, 没有同步, 线程不安全,查

1
2
3
public class ArrayList<E> extends AbstractList<E> implements List<E>,RandomAccess,Cloneable,Serializable {

}
  • LinkedList 接口实现类

    实现了List接口,继承了AbstractSequentialList抽象类,链表结构, 插入删除, 没有同步, 线程不安全

1
2
3
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>,Deque<E>,Cloneable,Serializable {

}
  • Vector 接口实现类

    实现了List接口,继承了AbstractList抽象类,数组,synchronized 同步, 线程安全,是早期集合,查询

1
2
3
public class Vector<E> extends AbstractList<E> implements List<E>,RandomAccess,Cloneable,Serializable {

}
  • Stack栈

栈是有序的数据结构,采用先进后出FILO存储模式,当栈中没有数据保存时,出栈操作会出现空栈异常(EmptyStackException)

1
2
3
public class Stack<E> extends Vectors<E>{

}
Stack栈扩充的方法
方法 类型 说明
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
2
3
public interface Set<E> extends Collections<E> {

}
  • HashSet

    使用hash表(数组)存储元素,元素无顺序,线程不安全

1
2
3
public class HashSet<E> extends AbstractSet<E> implements Set<E>,Cloneable,Serializable {

}
  • LinkedHashSet

    链表维护元素的插入次序,哈希表维护元素唯一性

  • TreeSet

    底层实现为二叉树,元素排好序,不允许放入null值

1
2
3
public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>,Cloneable,Serializable {

}

4. Map

接口 键值对的集合 (双列集合),不是继承Collection接口

Map集合接口的方法
方法 类型 说明
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
2
3
public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>,Cloneable,Serializable {

}
  • HashMap 接口实现类

    没有同步, 线程不安全

1
2
3
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>,Cloneable,Serializable {

}
  • LinkedHashMap

    双向链表和哈希表实现

1
2
3
public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> {

}
  • WeakHashMap

    强引用,GC回收弱引用

  • TreeMap

    红黑树对所有的key进行排序

1
2
3
public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>,Cloneable,Serializable {

}
  • IdentifyHashMap

5. Iterator

集合的输出四种方式:Iterator,ListIterator,Enumeration,foreach,Itertor是专门的迭代输出接口

Iterator接口常用的方法
方法 类型 说明
public boolean hasNext() 普通 判断是否有下一个值
public E next() 普通 取出当前元素
public default void remove() 普通 移除当前元素

6. Enumeration

Enumeration接口常用的方法
方法 类型 说明
public boolean hasMoreElements() 普通 判断是否有下一个元素
public E nextElement() 普通 取出当前元素

7. ListIterator

ListIterator接口常用的方法
方法 类型 说明
public boolean hasPrevious() 普通 判断是否有前一个元素
public E previous() 普通 取出前一个元素

8. Queue

队列是一种先进先出FIFO的线性数据结构

Queue接口常用的方法
方法 类型 说明
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.总结

还有许多的类集框架没有写出来,欢迎大家总结。