用到的相关资料:
https://www.jianshu.com/p/63b01b6379fb
关于List
(图片来源于以上链接)
List实现了Collection接口,主要分为ArrayList和linkedList,由于我们使用的数组是定长的,而List的长度是可变的,所以List在我们日常使用中更加贴近业务需求,更加常用。与Set比较而言,List是有序的,可以直接通过索引来访问元素。
List主要有:ArrayList、LinkedList两个实现类。
- ArrayList:顾名思义,它的底层是通过数组来实现的,随着元素个数的增加进行动态扩容,能够进行随机访问,但是线程不安全。在随机访问方面比LinkedList高效
- LinkedList:底层通过链表来实现,在元素的删除、添加方面效率较高
常用方法
函数名 | 描述 |
---|---|
boolean add(Object obj) | 向列表中添加元素 |
void add(int index, Object obj) | 向列表中的指定位置添加元素 |
void clean() | 删除列表中的所有元素 |
Object remove(int index) | 删除指定位置的元素,并将删除的元素返回 |
boolean remove(Object obj) | 删除列表中的指定元素 |
Object get(int index) | 获取列表中指定位置的元素值 |
boolean isEmpty() | 判断列表是否为空 |
boolean contains(Object obj) | 判断列表中是否包含该指定元素 |
int size() | 获取列表中的元素的个数 |
Object set(int index,Object obj) | 把列表中指定位置的元素修改为指定值,返回修改前的值 |
基本操作
- 构造
import java.util.*;
List<Integer> listA = new ArrayList<>();
List<Integer> listB = new LinkedList<>();
- 添加/删除元素
listA.add(4);
listA.add(58);
listA.add(6);
listA.remove(1); //删除指定下标的元素
listA.remove(Integer.valueOf(4)); //删除指定元素
- 获取长度
listA.size();
- 获取/修改元素
listA.get(0); //获取位置下标为0的元素
listA.set(0,67); //将位置下标0的元素值修改为67
- 查询
listA.isEmpty(); //判断列表是否为空
listA.contains(8); //判断列表是否含有元素8
- 遍历
//for循环遍历
for(int value:listA){
//代码
}
-----------------------------------------------------------------------------------*
//迭代器遍历
Iterator<Integer> iterator = listA.iterator();
while(iterator.hasNext()){
int value = iterator.next();
//代码
}