简介
基础集合框架在java.util.*
包中,对常用的数据结构提供了支持。
Collection
主要包含List
、Set
、Queue
三个分支。
类图
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
无序不可重复的集合;API
与Collection
一样。
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
不能重复。
类图
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)