|NO.Z.00047|——————————|BigDataEnd|——|Java&集合类库.V04|——|Java.v04|List集合.一.v01|
一、List集合(重中之重)
### --- List集合(重中之重)
——> [List集合]——[List集合的概念和ArrayList类的源码解析]
——> [LinkedList类的概念和源码解析]——[Stack类和Vector类的概念]
### --- 基本概念
——> java.util.List集合是Collection集合的子集合,
——> 该集合中允许有重复的元素并且有先后放入次序。
——> 该集合的主要实现类有:ArrayList类、LinkedList类、Stack类、Vector类。
——> 其中ArrayList类的底层是采用动态数组进行数据管理的,支持下标访问,
——> 增删元素不方便。
——> 其中LinkedList类的底层是采用双向链表进行数据管理的,访问不方便,增删元素方便。
——> 可以认为ArrayList和LinkedList的方法在逻辑上完全一样,只是在性能上有一定的差别,
——> ArrayList更适合于机访问而LinkedList更适合于插入和删除;
——> 在性能要求不是特别苛刻的情形下可以忽略这个差别。
——> 其中Stack类的底层是采用动态数组进行数据管理的,
——> 该类主要用于描述一种具有后进先出特征的数据结构,叫做栈(last in first out LIFO)。
——> 其中Vector类的底层是采用动态数组进行数据管理的,
——> 该类与ArrayList类相比属于线程安全的类,效率比较低,以后开发中基本不用。
二、常用的方法
方法声明 | 功能介绍 |
void add(int index, E element) | 向集合中指定位置添加元素 |
boolean addAll(int index, Collection<? extends E> c) | 向集合中添加所有元素 |
E get(int index) | 从集合中获取指定位置元素 |
int indexOf(Object o) | 查找参数指定的对象 |
int lastIndexOf(Object o) | 反向查找参数指定的对象 |
E set(int index, E element) | 修改指定位置的元素 |
E remove(int index) | 删除指定位置的元素 |
List subList(int fromIndex, int toIndex) | 用于获取子List |
三、ArrayList类的底层原理

四、LinkedList类的底层原理

五、编程代码
package com.yanqi.task14;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
// 1.声明一个List接口类型的引用指向ArrayList类型的对象,形成了多态
// 由源码可知:当new对象时并没有申请数组的内存空间
List lt1 = new ArrayList();
// 2.向集合中添加元素并打印
// 由源码可知:当调用add方法添加元素时会给数组申请长度为10的一维数组,扩容原理是:原始长度的1.5倍
lt1.add("one");
System.out.println("lt1 = " + lt1); // [one]
System.out.println("----------------------------------------------------");
// 2.声明一个List接口类型的引用指向LinkedList类型的对象,形成了多态
List lt2 = new LinkedList();
lt2.add("one");
System.out.println("lt2 = " + lt2); // [one]
}
}
六、编译打印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=49566:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task14.ListTest
lt1 = [one]
----------------------------------------------------
lt2 = [one]
Process finished with exit code 0
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」