当前位置:网站首页>初始 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天学习挑战赛
边栏推荐
猜你喜欢
Unity 截取3D图像 与 画中画PIP的实现
Quickly build a website with static files
ML之yellowbrick:基于titanic泰坦尼克是否获救二分类预测数据集利用yellowbrick对LoR逻辑回归模型实现可解释性(阈值图)案例
软测人每个阶段的薪资待遇,快来康康你能拿多少?
Click the icon in Canvas App to generate PDF and save it to Dataverse
单例模式使用饿汉式和懒汉式创建一定安全?很多人不知
最小化安装debian11
SPOJ 2774 Longest Common Substring(两串求公共子串 SAM)
RSS feeds WeChat public - feed43 asain
BMN: Boundary-Matching Network for Temporal Action Proposal Generation Reading Notes
随机推荐
简单了解下 TCP,学习握手和挥手以及各种状态到底是怎么样的
一个函数有多少种调用方式?
剑指offer第22题-链表中倒数第K个节点
Quickly build a website with static files
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
Jar a key generation document database
BMN: Boundary-Matching Network for Temporal Action Proposal Generation Reading Notes
Network basic learning series four (network layer, data link layer and some other important protocols or technologies)
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.
用队列模拟实现栈
complete binary tree problem
智能座舱的「交互设计」大战
Why do we need callbacks
V8中的快慢数组(附源码、图文更易理解)
FinClip,助长智能电视更多想象空间
The principle and use of AOSP CameraLatencyHistogram
数据分析知识点搜集(纯粹的搜集)
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
Kotlin - 扩展函数和运算符重载
libnet