文章目录
1. Collection
Iterable 接口与 Map 接口在 Java 体系中占主要地位,基本上所有的数据结构都是基于这个两个接口,一个是线性可迭代的一个是哈希表。
Collection 接口作为集合体系的父接口,Map 作为哈希表体系的接口。
最主要的集合 Collection 源码提供方法:
public interface Collection<E> extends Iterable<E> {
int size(); // 集合大小
boolean isEmpty(); // 是否为空
boolean contains(Object o); // 是否包含某个元素
Iterator<E> iterator(); // 返回迭代器
Object[] toArray(); // 返回 Object 数组
<T> T[] toArray(T[] a); // 返回指定泛型的数组
boolean add(E e); // 添加一个元素,返回是否添加成功
boolean remove(Object o); // 移除一个元素,返回是否添加成功
boolean containsAll(Collection<?> c); // 是否包含另一个集合
boolean addAll(Collection<? extends E> c); // 将另一个集合添加到当前集合
boolean removeAll(Collection<?> c); // 移除当前集合的元素,返回集合是否被修改过
default boolean removeIf(Predicate<? super E> filter); // 根据添加移除元素
boolean retainAll(Collection<?> c); // 仅保留存在于给定集合的元素,返回集合是否被修改过
void clear(); // 清空集合
boolean equals(Object o); // 判断是否相等
int hashCode(); // 返回hash值
}
2. List
- 存储的数据特点:存储有序的、可重复的数据。
- 常用的实现类:
- Collection接口:单列集合,用来存储一个一个的对象
- List接口:存储序的、可重复的数据。 -->“动态”数组,替换原的数组
- ArrayList:作为List接口的主要实现类;线程不安全的,效率高;底层使用Object[] elementData存储,随着元素的增加而动态扩容
- LinkedList:对于频繁的插入、删除操作,使用此类效率比ArrayList高;底层使用双向链表存储,随着元素的增加而不断向链表的后端增加结点
2.1 List接口
#List方法
A:添加功能
boolean add(E e):向集合的尾部添加一个元素
* void add(int index, E element):在指定位置添加元素
boolean addAll(Collection<? extends E> c):在集合中尾部添加一个集合。
* boolean addAll(int index, Collection<? extends E> c);// 在集合指定位置添加一个集合。
B:删除功能
void clear():删除集合中的所有元素
* E remove(int index):删除集合指定位置的元素,并把删除的元素返回
boolean remove(Object o):删除集合中指定的元素
boolean removeAll(Collection<?> c):删除两个集合的交集 。
* default void replaceAll(UnaryOperator<E> operator) // 将集合中的元素特换成指定元素
C:修改功能
void clear(); // 清空集合元素
E set(int index