Open Source, Open Future!
  menu
107 文章
ღゝ◡╹)ノ❤️

基础集合概述

简介

基础集合框架在java.util.*包中,对常用的数据结构提供了支持。

Collection

主要包含ListSetQueue三个分支。

类图

image.png

Iterable

实现此接口可通过迭代器遍历元素

Collection

提供了对集合进行基本操作的方法

    // 新增
    boolean add(E e);
    boolean addAll(Collection<? extends E> c);

    // 删除
    boolean remove(Object o);
    boolean removeAll(Collection<?> c);
    default boolean removeIf(Predicate<? super E> filter) 
    void clear();
    // 与入参不相等的元素全部删除
    boolean retainAll(Collection<?> c);

    // 查询是否包含指定元素
    boolean contains(Object o);
    boolean containsAll(Collection<?> c);

    // 转换成数组
    Object[] toArray();
    <T> T[] toArray(T[] a);

    int size();
    boolean isEmpty();

    // java 8中提供的流式写法
    default Stream<E> stream() 
    default Stream<E> parallelStream() 

Set

无序不可重复的集合;APICollection一样。

List

有序可重复的集合;在Collection基础上,新增了对列表基本操作的方法:

    // 新增
    void add(int index, E element);
    boolean addAll(int index, Collection<? extends E> c);

    // 删除指定索引处的元素
    E remove(int index);

    // 修改指定索引处的元素
    E set(int index, E element);
    // 列表中的每个元素经过计算得出新值,并用新值替代旧值
    default void replaceAll(UnaryOperator<E> operator);

    // 查询指定索引处的元素
    E get(int index);
    // 查询指定元素第一次出现的索引
    int indexOf(Object o);
    // 查询指定元素最后一次出现的索引
    int lastIndexOf(Object o);
    // 查询指定范围的子列表
    List<E> subList(int fromIndex, int toIndex);
    
    // 获取列表迭代器(可双向遍历)
    ListIterator<E> listIterator();
    ListIterator<E> listIterator(int index);

    // 排序
    default void sort(Comparator<? super E> c)

Queue

队列。

    // 新增元素,队列满时报异常
    boolean add(E e);
    // 新增元素,队列满时返回false
    boolean offer(E e);

    // 返回并移除队列头部元素,队列为空报异常
    E remove();
    // 返回并移除队列头部元素,队列为空返回null
    E poll();

    // 返回不移除队列头部元素,队列为空报异常
    E element();
    // 返回不移除队列头部元素,队列为空返回null
    E peek();

Map

key-value键值对映射,key不能重复。

类图

image.png

Map

提供了对map进行基本操作的方法

    V put(K key, V value);
    void putAll(Map<? extends K, ? extends V> m);

    V remove(Object key);
    void clear();

    V get(Object key);
    int size();
    boolean isEmpty();
    // 是否包含指定key
    boolean containsKey(Object key);
    // 是否包含指定value
    boolean containsValue(Object value);

    // key集合
    Set<K> keySet();
    // value集合
    Collection<V> values();
    // 键值对集合
    Set<Map.Entry<K, V>> entrySet();

    // 查询指定key对应的value,若key不存在返回指定的默认值
    default V getOrDefault(Object key, V defaultValue)
    // jdk1.8引入的遍历方式
    default void forEach(BiConsumer<? super K, ? super V> action)
    // 每个元素经过计算得出新值,然后用新值替代旧值
    default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function)
    // 先查询,key对应的值为null则调用put,否则返回对应值
    default V putIfAbsent(K key, V value)
    // key对应的值与入参value相等时删除
    default boolean remove(Object key, Object value)
    // key对应的值与oldValue相等时,用newValue覆盖value
    default boolean replace(K key, V oldValue, V newValue)
    default V replace(K key, V value)
    default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
    default V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
    default V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
    default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) 

工具