当前位置: 首页 > news >正文

Java 中 List 接口的学习笔记

1. 什么是 List?

在 Java 中,List 是一个接口,属于 Java Collections Framework。它表示一个有序的集合,可以包含重复元素。List 接口允许通过索引访问元素,提供了多种实现方式,如 ArrayListLinkedList

2. List 的特点

  • 有序性:元素的插入顺序被保存,可以通过索引访问元素。
  • 可重复性:可以存放重复的元素。
  • 动态大小:与数组不同,List 的大小可以动态调整。

3. List 的常用实现类

3.1 ArrayList

  • 基于动态数组实现。
  • 随机访问速度快,插入和删除操作较慢(特别是在中间位置)。
  • 适合于频繁查询,但不频繁修改的场景。

示例代码

import java.util.ArrayList;ArrayList<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
list.add("Hello"); // 允许重复元素System.out.println(list.get(0)); // 输出: Hello
System.out.println(list.size()); // 输出: 3

3.2 LinkedList

  • 基于双向链表实现。
  • 插入和删除操作效率高,特别是在中间位置。
  • 随机访问速度慢,因为需要遍历链表。

示例代码

import java.util.LinkedList;LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("Hello");
linkedList.add("World");
linkedList.addFirst("Start"); // 在链表头部插入System.out.println(linkedList.get(1)); // 输出: Hello
System.out.println(linkedList.size()); // 输出: 3

4. List 接口的常用方法

当然可以!以下是关于 Java 中 List 接口的常用方法的详细介绍,包括代码示例。

4. List 接口的常用方法及示例

4.1 添加元素

  • add(E e):在列表末尾添加元素。
import java.util.ArrayList;ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");System.out.println(list); // 输出: [Apple, Banana, Cherry]
  • add(int index, E element):在指定位置插入元素。
list.add(1, "Orange"); // 在索引1的位置插入元素
System.out.println(list); // 输出: [Apple, Orange, Banana, Cherry]

4.2 获取元素

  • get(int index):返回指定位置的元素。
String fruit = list.get(2);
System.out.println(fruit); // 输出: Banana

4.3 修改元素

  • set(int index, E element):用指定元素替换指定位置的元素。
list.set(0, "Grapes"); // 将索引0的元素替换为"Grapes"
System.out.println(list); // 输出: [Grapes, Orange, Banana, Cherry]

4.4 删除元素

  • remove(int index):移除指定位置的元素。
list.remove(1); // 移除索引1的元素
System.out.println(list); // 输出: [Grapes, Banana, Cherry]
  • remove(Object obj):移除列表中第一次出现的指定元素。
list.remove("Banana"); // 移除元素"Banana"
System.out.println(list); // 输出: [Grapes, Cherry]

4.5 查找元素

  • indexOf(Object o):返回指定元素第一次出现的索引,若不存在则返回 -1。
int index = list.indexOf("Cherry");
System.out.println(index); // 输出: 1
  • contains(Object o):检查列表中是否包含指定元素。
boolean containsGrapes = list.contains("Grapes");
System.out.println(containsGrapes); // 输出: true

4.6 其他方法

  • size():返回列表中的元素数量。
int size = list.size();
System.out.println(size); // 输出: 2
  • isEmpty():检查列表是否为空。
boolean isEmpty = list.isEmpty();
System.out.println(isEmpty); // 输出: false
  • clear():清空列表。
list.clear();
System.out.println(list); // 输出: []
  • toArray():将列表转化为数组。
list.add("Mango");
list.add("Peach");
Object[] fruitsArray = list.toArray();
for (Object fruit : fruitsArray) {System.out.println(fruit); // 输出: Mango, Peach
}

5. List 的时间复杂度

操作ArrayListLinkedList
添加元素 (末尾)O(1)O(1)
添加元素 (指定位置)O(n)O(n)
获取元素O(1)O(n)
删除元素O(n)O(n)
查找元素O(n)O(n)

6. 总结

List 接口是 Java 集合框架的重要组成部分,提供了灵活的动态数组和链表实现。通过理解不同实现的特点及其适用场景,能够帮助我们在编程中做出更合适的选择。

练习

  1. 使用 ArrayList 实现一个简单的待办事项列表,支持添加、删除和查看待办事项。
  2. 使用 LinkedList 实现一个简单的浏览历史记录,支持前进和后退操作。

通过这些练习,你将加深对 Java 中 List 接口的理解和使用。希望这份笔记能帮助你更好地学习和掌握 Java 中的集合!

http://www.lryc.cn/news/500174.html

相关文章:

  • 【原生js案例】webApp实现鼠标移入移出相册放大缩小动画
  • LVGL9 定时器模块
  • Qt学习笔记第51到60讲
  • 网页设计--axios作业
  • SpringBoot 整合 Avro 与 Kafka 详解
  • 若依 ruoyi VUE el-select 直接获取 选择option 的 label和value
  • 大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
  • 修改MySQL存储路径
  • Git常用的命令【提交与回退】
  • 详解:HTTP/HTTPS协议
  • 0.96寸OLED---STM32
  • 保姆级教学 uniapp绘制二维码海报并保存至相册,真机正常展示图片二维码
  • 常用Vim操作
  • 【C#】NET 9中LINQ的新特性-CountBy
  • Trimble X9三维激光扫描仪高效应对化工厂复杂管道扫描测绘挑战【沪敖3D】
  • 【数据结构】文件和外部排序
  • 新手学习:网页前端、后端、服务器Tomcat和数据库的基本介绍
  • 机器学习贝叶斯模型原理
  • 【C++】实现100以内素数的求解
  • Python 浏览器自动化新利器:DrissionPage,让网页操作更简单!
  • Rust学习笔记_13——枚举
  • Postgresql 格式转换笔记整理
  • AI开发:卷积神经网络CNN原理初识,简易例程 - 机器学习
  • 详细介绍vue的递归组件(重要)
  • 【单片机基础知识】基础知识(CortexM系列、STM32系统框架、存储器映射、寄存器映射)
  • yolov5导出命令
  • RabbitMQ的常用术语介绍
  • Docker魔法:用docker run -p轻松开通容器服务大门
  • 【后端面试总结】Redis过期删除策略
  • 数字图像处理(15):图像平移