当前位置:网站首页>初始 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天学习挑战赛
边栏推荐
- Creo 9.0二维草图的诊断:加亮开放端点
- ML's yellowbrick: A case of interpretability (threshold map) for LoR logistic regression model using yellowbrick based on whether Titanic was rescued or not based on the two-class prediction dataset
- SPOJ 2774 Longest Common Substring(两串求公共子串 SAM)
- Scala基础【正则表达式、框架式开发原则】
- Redis persistence method
- ts用法大全
- 射频芯片(RFIC)的协议之5G及其调制
- 七夕活动浪漫上线,别让网络拖慢和小姐姐的开黑时间
- Flutter教程之为什么 Flutter 是创业的最佳选择?
- [Paper Reading] TRO 2021: Fail-Safe Motion Planning for Online Verification of Autonomous Vehicles Using Conve
猜你喜欢
直播系统聊天技术(八):vivo直播系统中IM消息模块的架构实践
代码重构:面向单元测试
响应式织梦模板除尘器类网站
数据分析知识点搜集(纯粹的搜集)
Pytest学习-setup/teardown
Unity 截取3D图像 与 画中画PIP的实现
Analysys Analysis: The transaction scale of China's online retail B2C market in Q2 2022 will reach 2,344.47 billion yuan
超级完美版布局有快捷键,有背景置换
用两个栈模拟队列
The salary of soft testers at each stage, come to Kangkang, how much can you get?
随机推荐
超级完美版布局有快捷键,有背景置换(解决opencv 中文路径问题)
设置工作模式与环境(下):探查和收集信息
Jar a key generation document database
rosbridge-WSL2 && carla-win11
智能座舱的「交互设计」大战
逆波兰表达式求值
leetcode/子串中不能有重复字符的最长子串
Storage engine written by golang, based on b+ tree, mmap
RPA助力商超订单自动化!
With the rise of concepts such as metaverse and web3.0, many digital forms such as digital people and digital scenes have begun to appear.
(PC+WAP)织梦模板不锈钢类网站
redis持久化方式
The super perfect layout has shortcut keys and background replacement
禾匠编译错误记录
A simple understanding of TCP, learn how to shake hands, wave hands and various states
使用tf.image.resize() 和tf.image.resize_with_pad()调整图像大小
Click the icon in Canvas App to generate PDF and save it to Dataverse
Republish the lab report
单例模式使用饿汉式和懒汉式创建一定安全?很多人不知
密码学基础以及完整加密通讯过程解析