线性表与顺序表
线性表
如图所示,这种具有"一对一"关系存储的结构可称为线性存储结构,具体又可分为顺序表和链表
顺序表
顺序表是一种类似数组的存储结构,元素有序的存储在内存中
链表
链表的每个元素存储基本数据,同时也会存储一个指向下一个元素的"指针"
List接口
List 接口继承了 Collection 接口,Collection 接口继承Iterable接口
Iterable 是迭代器,提供了对集合类 for-each 的支持,实现该接口的类进行逐个元素的遍历
Collection规范了一些方法,JDK 不提供此接口的任何直接实现:它提供更具体的子接口(如 Set
和 List
)实现
常用方法
List 提供的方法有
使用:要注意的是,List 是一个接口,不能直接实例化,使用时要实例化实现List的类,如:ArrayList、LinkedList等
List中的方法很多,但常用的方法如下表:
方法 | 摘要 |
---|---|
void add(E e) | 在列表的末尾添加指定的项 |
void add(int index, E e) | 在列表中索引指示的位置添加指定的项 |
void addAll(Collection<? extends E> c) | 将指定列表中的所有元素添加(尾插)到此集合 |
void clear() | 删除列表中所有元素 |
boolean contains(Object o) | 如果此列表包含指定的元素,则返回 true |
boolean isEmpty() | 如果此列表不包含元素,则返回 true |
boolean removeAll() | 删除指定列表中包含的所有此集合的元素 |
boolean remove(Object o) | 从列表中删除第一个指定元素(若存在) |
int size() | 返回列表中的元素数 |
E get(int index) | 返回此列表中 index 位置的元素 |
E set(int index, E e) | 用指定的元素替换此列表中 index 位置的元素 |
int lastIndexOf(Object o) | 返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1 |
int IndexOf(Object o) | 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1 |
List subList(int fromIndex, int toIndex) | 截取 fromIndex 至 toIndex 部分的列表 |
ArrayList
ArrayList是java.util包下的一个类,实现了List, RandomAccess, Cloneable, Serializable接口,其底层是一段连续空间,支持动态扩容的顺序表
实现的接口的作用为:
RandomAccess:表明ArrayList支持随机访问
Cloneable:表明ArrayList支持clone
Serializable:表明ArrayList支持序列化
ArrayList不是线程安全的,在单线程中可以使用
ArrayList的使用
ArrayList源码中提供的构造方法有三个,分别是
构造方法 | 摘要 |
---|---|
ArrayList | 创建一个初始容量为10的列表 |
ArrayList(int x) | 创建一个初始容量为x的列表 |
ArrayList(Collection<? extends E> c) | 利用集合c创建一个列表 |
List<Integer> list1 = new ArrayList<>();//创建一个空列表
List<Integer> list2 = new ArrayList<>(20);//创建一个容量为20的空列表
List<Integer> list3 = new ArrayList<>(list1);//根据list1创建list3,两者内容相同
List list4 = new ArrayList();//创建列表时应避免省略类型,避免读取时类型转换出错
常用方法
ArrayList提供的常用方法有:
方法 | 摘要 |
---|---|
E get(int index) | 返回此列表中指定位置上的元素 |
E set(int index, E element) | 用指定的元素替代此列表中指定位置上的元素 |
int size() | 返回此列表中的元素数 |
boolean isEmpty() | 如果此列表中没有元素,则返回 true |
void clear() | 移除此列表中的所有元素 |
boolean add(E e) | 将指定的元素添加到此列表的尾部 |
void add(int index, E element) | 将指定的元素插入此列表中的指定位置 |
E remove(int index) | 移除此列表中指定位置上的元素 |
boolean remove(Object o) | 移除此列表中首次出现的指定元素(若存在) |
int indexOf(Object o) | 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1 |
boolean contains(Object o) | 如果此列表中包含指定的元素,则返回 true |
本文的主要目的是充当学习笔记,同时强化学习效果,且兼有分享所学知识之意,欢迎批评指正。