当前位置:网站首页>初始 List 接口
初始 List 接口
2022-08-03 23:28:00 【掉了颗兔牙lx】
目录
1. 什么是 List
List 是 Java 中线性表定义的接口,是有序集合(也称为序列 ),是实现 Collection 接口中的一个接口。 该接口中可以精确控制列表中每个元素的插入位置。 用户可以通过索引访问元素,并搜索列表中的元素。
2. List 常见实现类
2.1 ArrayList 类
Arraylist 是动态数组,从数据结构上来讲,是基于数组实现的线性表(即顺序表)。
2.2 LinkedList 类
Linkedlist 底层使用的是双向循环链表数据结构。
** ArrayList 和 LinkedList 的区别:**
1. 底层实现不同:Arraylist 底层使用的是动态数组,Linkedlist 底层使用的是双向循环链表数据结构。
2. 时间复杂度不同:Arraylist 插入和删除元素的时间复杂度受元素位置的影响,如果尾插时间复杂度是O(1),其它时候就是O(N)。Linkedlist 插入删除不受位置影响,时间复杂度都是O(1)。
3. Arraylist 支持快速随机访问,而 Linkedlist 不支持。快速随机访问就是可以通过序号(索引位置)快速获取元素。
4. 消耗空间不同:Arraylist 使用的数组结尾时会预留一些空间,而 Linkedlist 中每个元素需要消耗比 Arraylist 更多的空间用来存放直接前驱,后继以及数据本身。
2.3 Vector 类
Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的。
3. 常用方法
增加:
add(存储的具体元素);
add(int index, 数据类型 data);
查找:
get(int index)
contains(元素)
修改:
set(int index,数据类型 修改后的数值)
删除:
remove(int index)
remove(Object o)
若 list 保存的是个 int 类型,调用 remove(int),实际上删除的是索引;删除元素,先迭代取得该元素对应的索引,再调用 remove 删除元素。
boolean add(E e) | 尾插 e |
void add(int index, E element) | 将 e 插入到 index 位置 |
boolean addAll(Collection<? extends E> c) | 尾插 c 中的元素 |
E remove(int index) | 删除 index 位置元素 |
boolean remove(Object o) | 删除遇到的第一个 o |
E get(int index) | 获取下标 index 位置元素 |
E set(int index, E element) | 将下标 index 位置元素设置为 element |
void clear() | 清空 |
boolean contains(Object o) | 判断 o 是否在线性表中 |
int indexOf(Object o) | 返回第一个 o 所在下标 |
int lastIndexOf(Object o) | 返回最后一个 o 的下标 |
List<E> subList(int fromIndex, int toIndex) | 截取部分 list |
代码示例:
public class Demo2 {
public static void main(String[] args) {
List<String> courses = new ArrayList<>();
courses.add("C 语言");
courses.add("Java SE");
courses.add("Java Web");
courses.add("Java EE");
// 和数组一样,允许添加重复元素
courses.add("C 语言");
// 按照添加顺序打印
System.out.println(courses);
// 类似数组下标的方式访问
System.out.println(courses.get(0));
System.out.println(courses);
courses.set(0, "计算机基础");
System.out.println(courses);
// 截取部分 [1, 3)
List<String> subCourses = courses.subList(1, 3);
System.out.println(subCourses);
// 重新构造
List<String> courses2 = new ArrayList<>(courses);
System.out.println(courses2);
List<String> courses3 = new LinkedList<>(courses);
System.out.println(courses3);
// 引用的转换
ArrayList<String> courses4 = (ArrayList<String>) courses2;
System.out.println(courses4);
// LinkedList<String> c = (LinkedList<String>)course2; 错误的类型
LinkedList<String> courses5 = (LinkedList<String>) courses3;
System.out.println(courses5);
// ArrayList<String> c = (ArrayList<String>)course3; 错误的类型
}
}
活动地址:CSDN21天学习挑战赛
边栏推荐
- Interpretation of ML: A case of global interpretation/local interpretation of EBC model interpretability based on titanic titanic rescued binary prediction data set using interpret
- Testng监听器
- Quickly build a website with static files
- 超级完美版布局有快捷键,有背景置换(解决opencv 中文路径问题)
- 【RYU】rest_router.py源码解析
- 完全二叉树问题
- JS获得URL超链接的参数值
- Republish the lab report
- HCIP BGP lab report
- JS get parameter value of URL hyperlink
猜你喜欢
The salary of soft testers at each stage, come to Kangkang, how much can you get?
redis持久化方式
响应式织梦模板餐饮酒店类网站
Scala基础【正则表达式、框架式开发原则】
Jar a key generation document database
rosbridge-WSL2 && carla-win11
- the skip/skipif Pytest learning
Code Casual Recording Notes_Dynamic Programming_416 Segmentation and Subsetting
直播预告 | 构建业务智联,快速拥抱财务数字化转型
重发布实验报告
随机推荐
Use tf.image.resize() and tf.image.resize_with_pad() to resize images
【LeetCode】最长回文子序列(动态规划)
单例模式使用饿汉式和懒汉式创建一定安全?很多人不知
[2022强网杯] polydiv和gamemaster
Fluorescein-PEG-CLS,胆固醇-聚乙二醇-荧光素科研试剂
AOSP CameraLatencyHistogram的原理与使用
Creo9.0 绘制中心线
软件测试内卷严重,如何提升自己的竞争力呢?
RSS feeds WeChat public - feed43 asain
最小化安装debian11
Shell编程之循环语句与函数
【LeetCode】最长公共子序列(动态规划)
Analysys Analysis: The transaction scale of China's online retail B2C market in Q2 2022 will reach 2,344.47 billion yuan
简单了解下 TCP,学习握手和挥手以及各种状态到底是怎么样的
complete binary tree problem
rsync 基础用法
Creo 9.0二维草图的诊断:着色封闭环
689. 三个无重叠子数组的最大和
Another MySQL masterpiece published by Glacier (send the book at the end of the article)!!
"Digital Economy Panorama White Paper" Financial Digital User Chapter released!