Java集合框架

Java集合框架

集合框架概述

集合框架简介

集合框架是一个用来表示和操作集合的统一框架。所有的集合类都位于java.util包下,主要有以下几个特点:

  1. 集合框架提供了一套性能优良、使用方便的接口和类,使我们可以更轻松地操作数据。
  2. 集合框架中的接口代表不同的集合类型,如List、Set、Map等。
  3. 集合框架中的类实现了这些接口,提供了具体的集合实现。
  4. 集合框架中的迭代器(Iterator)用于遍历集合中的元素。
  5. 集合框架中的比较器(Comparator)用于对集合中的元素进行排序和比较。

集合框架的结构

集合框架的结构如下所示:

集合框架结构

Collection接口

Collection接口简介

Collection接口是Java集合框架中最基本的接口,它定义了一些常用的集合操作方法,如添加元素、删除元素、获取元素等。Collection接口有两个子接口:List和Set。

Collection接口的方法

Collection接口定义了一些常用的方法,如下所示:

  1. boolean add(E e):向集合中添加一个元素。如果添加成功,返回true;否则返回false。
  2. boolean addAll(Collection<? extends E> c):将指定集合中的所有元素添加到当前集合中。如果添加成功,返回true;否则返回false。
  3. void clear():清空集合中的所有元素。
  4. boolean contains(Object o):判断集合中是否包含指定的元素。如果包含,返回true;否则返回false。
  5. boolean containsAll(Collection<?> c):判断集合中是否包含指定集合中的所有元素。如果包含,返回true;否则返回false。
  6. boolean isEmpty():判断集合是否为空。如果为空,返回true;否则返回false。
  7. Iterator<E> iterator():返回一个迭代器,用于遍历集合中的元素。
  8. boolean remove(Object o):从集合中删除指定的元素。如果删除成功,返回true;否则返回false。
  9. boolean removeAll(Collection<?> c):从集合中删除指定集合中的所有元素。如果删除成功,返回true;否则返回false。
  10. boolean retainAll(Collection<?> c):保留集合中与指定集合中相同的元素,删除其他元素。如果保留成功,返回true;否则返回false。
  11. int size():返回集合中元素的个数。
  12. Object[] toArray():将集合转换为数组。

Collection接口的实现类

Collection接口有很多实现类,常用的有:

  1. ArrayList:实现了List接口,底层使用数组实现,支持随机访问。
  2. LinkedList:实现了List接口,底层使用链表实现,支持高效的插入和删除操作。
  3. HashSet:实现了Set接口,底层使用哈希表实现,支持高效的查找操作。
  4. LinkedHashSet:实现了Set接口,底层使用链表和哈希表实现,支持高效的查找操作,同时保持元素的插入顺序。
  5. TreeSet:实现了Set接口,底层使用红黑树实现,支持有序的查找操作。
  6. HashMap:实现了Map接口,底层使用哈希表实现,支持高效的查找操作。
  7. LinkedHashMap:实现了Map接口,底层使用链表和哈希表实现,支持高效的查找操作,同时保持元素的插入顺序。
  8. TreeMap:实现了Map接口,底层使用红黑树实现,支持有序的查找操作。

List接口

List接口简介

List接口是Collection接口的子接口,它表示一个有序的集合,允许重复的元素。List接口提供了很多常用的方法,如添加元素、删除元素、获取元素等。

List接口的方法

List接口定义了一些常用的方法,如下所示:

  1. void add(int index, E element):在指定位置插入一个元素。如果插入成功,返回true;否则返回false。
  2. boolean addAll(int index, Collection<? extends E> c):在指定位置插入指定集合中的所有元素。如果插入成功,返回true;否则返回false。
  3. E get(int index):获取指定位置的元素。
  4. int indexOf(Object o):返回指定元素在列表中第一次出现的索引。如果列表中不包含该元素,则返回-1。
  5. int lastIndexOf(Object o):返回指定元素在列表中最后一次出现的索引。如果列表中不包含该元素,则返回-1。
  6. ListIterator<E> listIterator():返回一个列表迭代器,用于遍历列表中的元素。
  7. ListIterator<E> listIterator(int index):返回一个列表迭代器,从指定位置开始遍历列表中的元素。
  8. E remove(int index):删除指定位置的元素,并返回该元素。
  9. E set(int index, E element):将指定位置的元素替换为新的元素,并返回旧的元素。
  10. List<E> subList(int fromIndex, int toIndex):返回从fromIndex(包含)到toIndex(不包含)之间的子列表。

List接口的实现类

List接口有很多实现类,常用的有:

  1. ArrayList:实现了List接口,底层使用数组实现,支持随机访问。
  2. LinkedList:实现了List接口,底层使用链表实现,支持高效的插入和删除操作。
  3. Vector:实现了List接口,底层使用数组实现,线程安全,但性能较差。

Set接口

Set接口简介

Set接口是Collection接口的子接口,它表示一个无序的集合,不允许重复的元素。Set接口提供了很多常用的方法,如添加元素、删除元素、获取元素等。

Set接口的方法

Set接口定义了一些常用的方法,如下所示:

  1. boolean add(E e):向集合中添加一个元素。如果添加成功,返回true;否则返回false。
  2. boolean addAll(Collection<? extends E> c):将指定集合中的所有元素添加到当前集合中。如果添加成功,返回true;否则返回false。
  3. void clear():清空集合中的所有元素。
  4. boolean contains(Object o):判断集合中是否包含指定的元素。如果包含,返回true;否则返回false。
  5. boolean containsAll(Collection<?> c):判断集合中是否包含指定集合中的所有元素。如果包含,返回true;否则返回false。
  6. boolean isEmpty():判断集合是否为空。如果为空,返回true;否则返回false。
  7. Iterator<E> iterator():返回一个迭代器,用于遍历集合中的元素。
  8. boolean remove(Object o):从集合中删除指定的元素。如果删除成功,返回true;否则返回false。
  9. boolean removeAll(Collection<?> c):从集合中删除指定集合中的所有元素。如果删除成功,返回true;否则返回false。
  10. boolean retainAll(Collection<?> c):保留集合中与指定集合中相同的元素,删除其他元素。如果保留成功,返回true;否则返回false。
  11. int size():返回集合中元素的个数。

Set接口的实现类

Set接口有很多实现类,常用的有:

  1. HashSet:实现了Set接口,底层使用哈希表实现,支持高效的查找操作。
  2. LinkedHashSet:实现了Set接口,底层使用链表和哈希表实现,支持高效的查找操作,同时保持元素的插入顺序。
  3. TreeSet:实现了Set接口,底层使用红黑树实现,支持有序的查找操作。

Map接口

Map接口简介

Map接口是Java集合框架中用于存储键值对的数据结构。Map接口提供了很多常用的方法,如添加键值对、删除键值对、获取键值对等。

Map接口的方法

Map接口定义了一些常用的方法,如下所示:

  1. V put(K key, V value):将指定的键值对添加到Map中。如果Map中已经存在该键,则用新的值替换旧的值,并返回旧的值。
  2. V get(Object key):根据指定的键获取对应的值。如果Map中不存在该键,则返回null。
  3. V remove(Object key):根据指定的键删除对应的键值对,并返回被删除的值。如果Map中不存在该键,则返回null。
  4. boolean containsKey(Object key):判断Map中是否包含指定的键。如果包含,返回true;否则返回false。
  5. boolean containsValue(Object value):判断Map中是否包含指定的值。如果包含,返回true;否则返回false。
  6. Set<K> keySet():返回Map中所有键的集合。
  7. Collection<V> values():返回Map中所有值的集合。
  8. Set<Map.Entry<K, V>> entrySet():返回Map中所有键值对的集合。
  9. int size():返回Map中键值对的个数。
  10. void clear():清空Map中的所有键值对。

Map接口的实现类

Map接口有很多实现类,常用的有:

  1. HashMap:实现了Map接口,底层使用哈希表实现,支持高效的查找操作。
  2. LinkedHashMap:实现了Map接口,底层使用链表和哈希表实现,支持高效的查找操作,同时保持元素的插入顺序。
  3. TreeMap:实现了Map接口,底层使用红黑树实现,支持有序的查找操作。
  4. Hashtable:实现了Map接口,底层使用哈希表实现,线程安全,但性能较差。
  5. ConcurrentHashMap:实现了Map接口,底层使用分段锁实现,支持并发访问,性能较好。

Iterator接口

Iterator接口简介

Iterator接口是Java集合框架中用于遍历集合中的元素。Iterator接口提供了一些常用的方法,如获取下一个元素、删除当前元素等。

Iterator接口的方法

Iterator接口定义了一些常用的方法,如下所示:

  1. boolean hasNext():判断集合中是否还有下一个元素。如果有,返回true;否则返回false。
  2. E next():获取集合中的下一个元素。如果已经没有下一个元素,则抛出NoSuchElementException异常。
  3. default void remove():删除集合中的当前元素。如果当前元素已经被删除,则抛出IllegalStateException异常。

Iterator接口的实现类

Iterator接口有很多实现类,常用的有:

  1. ArrayListIterator:实现了ListIterator接口,用于遍历ArrayList中的元素。
  2. LinkedListIterator:实现了ListIterator接口,用于遍历LinkedList中的元素。
  3. HashSetIterator:实现了Iterator接口,用于遍历HashSet中的元素。
  4. LinkedHashSetIterator:实现了Iterator接口,用于遍历LinkedHashSet中的元素。
  5. TreeSetIterator:实现了Iterator接口,用于遍历TreeSet中的元素。
  6. HashMapIterator:实现了Iterator接口,用于遍历HashMap中的元素。
  7. LinkedHashMapIterator:实现了Iterator接口,用于遍历LinkedHashMap中的元素。
  8. TreeMapIterator:实现了Iterator接口,用于遍历TreeMap中的元素。

总结

Java集合框架提供了多种数据结构,如List、Set和Map,用于存储和管理数据。每种数据结构都有其特点和适用场景,可以根据具体需求选择合适的数据结构。同时,Java集合框架还提供了一些常用的方法,如添加元素、删除元素、获取元素等,方便我们对集合进行操作。