|
Java中List接口是存储有序、可重复元素集合的核心工具,提供丰富的操作方法,主要实现类包括ArrayList和LinkedList。开发人员可通过索引访问元素,执行增删改查操作,并利用不同实现类的特性优化性能。12
List基础操作及核心方法
创建与初始化。
List<String> list = new ArrayList<>();
(默认容量10的动态数组)。List<Integer> list = new LinkedList<>();
(双向链表结构)。23元素操作。
方法 | 功能描述 | 示例代码 |
---|---|---|
add(E e) | 末尾添加元素 | list.add("Apple"); |
add(int index, E e) | 指定位置插入元素 | list.add(0, "Banana"); |
remove(int index) | 删除指定索引元素 | list.remove(1); |
get(int index) | 获取元素 | String fruit = list.get(0); |
set(int index, E e) | 修改元素 | list.set(0, "Orange"); |
size()
:获取元素数量。isEmpty()
:判断列表是否为空。contains(Object o)
:检查元素是否存在。2遍历方式对比
遍历方式 | 特点 | 适用场景 |
---|---|---|
普通for循环 | 通过索引控制,可反向遍历 | 需要索引操作时使用 |
增强for循环 | 语法简洁,自动处理迭代器 | 简单遍历所有元素 |
Iterator迭代器 | 支持遍历时安全删除元素 | 需要并发修改时使用 |
Stream API | 支持函数式编程,可链式操作(过滤/映射等) | Java8+的复杂数据处理场景 |
主流实现类特性对比
实现类 | 数据结构 | 访问速度 | 增删速度 | 线程安全 | 典型场景 |
---|---|---|---|---|---|
ArrayList | 动态数组 | O(1) | 中间操作O(n) | 不安全 | 频繁随机访问(商品列表) |
LinkedList | 双向链表 | O(n) | 头尾操作O(1) | 不安全 | 频繁插入删除(消息队列实现) |
CopyOnWriteArrayList | 写时复制数组 | O(1) | 写操作O(n) | 安全 | 多线程读多写少(配置信息存储) |
javaCopy Code// List转Map(处理重复Key)
Map<String, User> userMap = list.stream()
.collect(Collectors.toMap(User::getName,
Function.identity(),
(oldVal, newVal) -> oldVal));
```:ml-citation{ref="4" data="citationList"}
:::ml-data{name=citationList}
```json
[{"abstract":"","title":"Java中List方法的使用详解","source":{"logo":"https://t15.baidu.com/it/u=2005731947,4139443793&fm=195&app=88&size=r1,1&q=100&n=0&f=JPEG&fmt=auto&maxorilen2heic=2000000","name":"CSDN博客","tag":""},"isVideo":false,"likeCount":"赞","videoDuration":"","thumbnail":"","type":"text","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=ruW4NOz0K09ACSDtzRxDTyw5vyf7WXztcaXNx2Qvr2GNLDtdLC1fMWL8WW6oET6o3klnv_L41uFq8UQtkHI-1h36gz-Kt9P_MPf1QP0jYAG"}},{"abstract":"","title":"Java List接口的用法(非常详细)","source":{"logo":"","name":"C语言中文网","tag":""},"isVideo":false,"likeCount":"赞","videoDuration":"","thumbnail":"","type":"text","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=_m4FEQxb5r178LrnA_ej-IkvH9MIuukZvKpBxgvCcgn9ULx5vjFPdKHejbvWmPjWSwsEm-gXmVanAEa7cct31K"}},{"abstract":"","title":"Java List(列表)","source":{"logo":"","name":"","tag":""},"isVideo":false,"likeCount":"赞","videoDuration":"","thumbnail":"","type":"text","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=AtDYe0cYeSX6FgODQypjel1jzi93QTzoTyn_o5ylRbwZF6JuAwEfKZxMTtCP0QY0dyGyGUjaUaxBDg4c4-wIHq"}},{"abstract":"","title":"Java8-对List转换Map、分组、求和、过滤","source":{"logo":"","name":"腾讯云","tag":""},"isVideo":false,"likeCount":"赞","videoDuration":"","thumbnail":"","type":"text","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=eHAmH0QN2q2eJUo8GMIbEkCRa-1QWGyimoJPT_ktAzlCEiYLkjYbpTJ0bAo0kIom65FwlHn-f1sfVI41YohVZ_"}},{"abstract":"","title":"JavaList集合","source":{"logo":"http://gimg3.baidu.com/topone/src=https%3A%2F%2Fmbs1.bdstatic.com%2Fsearchbox%2Fmappconsole%2Fimage%2F20200630%2Fdb4d874a-872b-4b27-931d-775a91ed0003.png&refer=http%3A%2F%2Fwww.baidu.com&app=2011&size=r1,1&n=0&g=0n&er=404&q=100&fmt=auto&maxorilen2heic=2000000?sec=1752253200&t=8fd1ebf19ea1744257c3a3d3376746e2","name":"百度百科","tag":""},"likeCount":"赞","videoDuration":"","thumbnail":"","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=UaAHO9vWnQvreeZsNFzIeEg4JcNPLH5bOqtzsarCKl6xvBe1xNZg_Ej_pbtyvU0wP47n5rirrjSUl2OFtlLm0pm5ouUFvgKTJpp_XDmrBSu"}},{"abstract":"","title":"Java集合(List)","source":{"logo":"http://gimg3.baidu.com/topone/src=https%3A%2F%2Fsearch-operate.cdn.bcebos.com%2F6a15e3da696bf097938b48d38e132a60.jpeg&refer=http%3A%2F%2Fwww.baidu.com&app=2011&size=r1,1&n=0&g=0n&er=404&q=100&fmt=auto&maxorilen2heic=2000000?sec=1752253200&t=1aa72e0ee59bdbf8d2f2c590039abe1d","name":"微信公众平台","tag":""},"hidden":true,"isVideo":false,"likeCount":"赞","videoDuration":"","thumbnail":"","type":"text","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=JNIHsv69kvnTR9dz0ZO2Fi5_shyc4Cw_6akNStMpauudKAZ2x_mbNOMQYL3oDrltfHtZRdOUbwa0ZKG4rgX4ZJe0CRULp8SgEpe8NGSnlGsAMlSPDvmSdgCEiPNCeuSA_r0gihhUDAtOEWoSne9ali9o3lPfvlbnciSa1S-Rix0n7X_24gTIp2V8w1x01s1NRdLqMjHChcoAIjdrUeyNyn-wW7a_gwam3CfVgcg9ilS8STyUFD0v_Sg_k6shs87L_k17p4kOd_Ra1C-9hnh_-_"}},{"abstract":"","title":"java中遍历list集合的四种方法","source":{"logo":"http://gimg3.baidu.com/topone/src=https%3A%2F%2Fsearch-operate.cdn.bcebos.com%2F6a15e3da696bf097938b48d38e132a60.jpeg&refer=http%3A%2F%2Fwww.baidu.com&app=2011&size=r1,1&n=0&g=0n&er=404&q=100&fmt=auto&maxorilen2heic=2000000?sec=1752253200&t=1aa72e0ee59bdbf8d2f2c590039abe1d","name":"微信公众平台","tag":""},"hidden":true,"isVideo":false,"likeCount":"赞","videoDuration":"","thumbnail":"","type":"text","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=JNIHsv69kvnTR9dz0ZO2Fi5_shyc4Cw_6akNStMpauxON39mO9GY0CbDE5cbA-ERwG-Ki7G6K_x5rjzgMeBlueq_y_f10R9hLJXTVZ3nHeQ6gS5jaKzWDcG4dQPQaF3e7nDXP5ozNvTmKtKpYeqCJmua6NosUoijHLJnmuBa2oSVxk8NY3fgi5XcIcBXkaFruckV_PnLxjeXWzw0RlDoe4xV4hOp6AjZZo3N7KBzbRZFxoreSdrn0bYQsH_qIiHvYSNKC5L4ARrWptpOBdpuBK"}},{"abstract":"","title":"java基础——java集合list详解","source":{"logo":"https://t15.baidu.com/it/u=2005731947,4139443793&fm=195&app=88&size=r1,1&q=100&n=0&f=JPEG&fmt=auto&maxorilen2heic=2000000","name":"CSDN博客","tag":""},"isVideo":false,"likeCount":"赞","videoDuration":"","thumbnail":"","type":"text","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=UcY8ThfQDxgvdvCMZj5VKJmfNStMW4x2nhR5-Yys5ban2Hj1SxwCwU_kX18ydml_g5DrrBFX49D6zuICMZMZKk6RsGTtoEiHH3bNAfNx30u"}},{"abstract":"","title":"“探索Java List的无限可能:从基础到高级应用“","source":{"logo":"","name":"腾讯云","tag":""},"isVideo":false,"likeCount":"赞","videoDuration":"","thumbnail":"","type":"text","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=eHAmH0QN2q2eJUo8GMIbEkCRa-1QWGyimoJPT_ktAzlCEiYLkjYbpTJ0bAo0kIom9FmCQCmPYQ4Mx8yx2ZgACK"}},{"abstract":"","title":"Java中List接口的实现类全解析:从基础到进阶用法","source":{"logo":"https://t15.baidu.com/it/u=2005731947,4139443793&fm=195&app=88&size=r1,1&q=100&n=0&f=JPEG&fmt=auto&maxorilen2heic=2000000","name":"CSDN博客","tag":""},"isVideo":false,"likeCount":"赞","videoDuration":"","thumbnail":"","type":"text","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=UcY8ThfQDxgvdvCMZj5VKJmfNStMW4x2nhR5-Yys5bbTOmBgwYYJqsGHwE1UNLGluiBx2VbnIhkzG-5hlcg9SdsVCIEL7kBuIA0-YAHOfbe"}},{"abstract":"","title":"【Java进阶系列4】一文搞懂List用法(附实战代码详解)","source":{"logo":"https://gips0.baidu.com/it/u=242957419,4244993702&fm=3033&app=3033&size=r1,1&q=100&n=0&f=JPEG&fmt=auto&maxorilen2heic=2000000","name":"科技K视角","tag":""},"isVideo":false,"likeCount":"赞","videoDuration":"","thumbnail":"","type":"text","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=JNIHsv69kvnTR9dz0ZO2Fh1-olhB_LOIGuSxd3FKOD6zNDLrN_ccdTLbpn736bsX"}},{"abstract":"","title":"Java的List,如何删除重复的元素,教你三个方法搞定!","source":{"logo":"","name":"腾讯云","tag":""},"isVideo":false,"likeCount":"赞","videoDuration":"","thumbnail":"","type":"text","disabled":false,"id":"","linkInfo":{"target":"_blank","href":"http://www.baidu.com/link?url=eHAmH0QN2q2eJUo8GMIbEkCRa-1QWGyimoJPT_ktAzlCEiYLkjYbpTJ0bAo0kIomreKXaUV7IfbX6HcuorOB3q"}}]
:::
在Java中,`List`是一个有序集合,允许存储重复的元素。它是Java集合框架(Java Collections Framework)的一部分,提供了对集合进行各种操作的接口。以下是`List`的一些基本用法: 1. List的声明与初始化 你可以使用接口名来声明一个List变量,但通常需要使用它的实现类来初始化这个变量。Java中`List`接口有几个常用的实现类,如`ArrayList`、`LinkedList`等。 ```java List<String> list = new ArrayList<>(); List<Integer> intList = new LinkedList<>(); ``` 2. 添加元素 可以使用`add()`方法向List中添加元素。 ```java list.add("Hello"); list.add("World"); intList.add(1); intList.add(2); ``` 3. 访问元素 可以通过索引来访问List中的元素,索引从0开始。 ```java String firstElement = list.get(0); // "Hello" Integer secondIntElement = intList.get(1); // 2 ``` 4. 遍历List 有多种方式可以遍历List,例如使用for循环、增强for循环(也称为for-each循环)或迭代器(Iterator)。 ```java // 使用for循环 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } // 使用增强for循环 for (String element : list) { System.out.println(element); } // 使用迭代器 Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } ``` 5. List的常用方法 - `size()`:返回List中的元素个数。 - `isEmpty()`:检查List是否为空。 - `contains(Object o)`:检查List是否包含某个元素。 - `remove(int index)`:按索引删除元素。 - `remove(Object o)`:删除第一次出现的指定元素。 - `clear()`:清空List中的所有元素。 6. List接口的实现类 - `ArrayList`:基于数组实现,查询速度快,但插入和删除元素时可能需要移动大量的元素。 - `LinkedList`:基于链表实现,插入和删除元素的速度较快,但查询速度相对较慢。 希望这些信息能帮你更好地理解和使用Java中的List。如