java中的List 和 ArrayList

List 和 ArrayList 是 Java 编程语言中用于处理集合数据的重要概念。下面是它们的详细解释:

List

List 是一个接口(Interface),它是 Java 集合框架(Java Collections Framework)的一部分,位于 java.util 包中。List 接口继承自 Collection 接口,并提供了有序的集合(也称为序列)。这意味着列表中的元素有一个固定的顺序,并且可以通过索引(从 0 开始)来访问和操作这些元素。

主要特点:
  • 有序: 元素按照插入顺序排列。
  • 可重复: 列表可以包含重复的元素。
  • 索引访问: 可以通过索引来访问、添加、删除和修改元素。
  • 常见实现类 : ArrayList, LinkedList, Vector, Stack 等。
常用方法:
  • add(e): 将指定元素添加到列表末尾。
  • get(int index): 返回列表中指定位置的元素。
  • set(int index, element): 替换指定位置的元素。
  • remove(int index): 删除并返回列表中指定位置的元素。
  • size(): 返回列表中的元素数量。
  • isEmpty(): 判断列表是否为空。
  • contains(Object): 判断列表是否包含指定元素。

ArrayList

ArrayList 是 List 接口的一个具体实现类(Concrete Implementation Class),它基于动态数组(Dynamic Array)实现。ArrayList 提供了快速随机访问的能力,因为它的底层是一个数组。

主要特点:
  • 动态数组: 内部使用数组存储元素,当数组容量不足时会自动扩容。
  • 快速随机访问: 支持通过索引快速访问元素,时间复杂度为 O(1)。
  • 允许 null 元素 : 可以在列表中存储 null 值。
  • 非线程安全 : 不是线程安全的,如果需要多线程环境下的并发操作,可以考虑使用 Collections.synchronizedList(new ArrayList<...>()) 或 CopyOnWriteArrayList。
常用方法:
  • add(e): 添加元素到列表末尾。
  • get(int index): 获取指定索引处的元素。
  • set(int index,element): 替换指定索引处的元素。
  • remove(int index): 移除指定索引处的元素。
  • size(): 返回列表中的元素数量。
  • clear(): 清空列表中的所有元素。
  • indexOf(Object): 返回指定元素第一次出现的索引,如果不存在则返回 -1。
  • lastIndexOf(Object): 返回指定元素最后一次出现的索引,如果不存在则返回 -1。
java 复制代码
import java.util.List;
import java.util.ArrayList;

public class Example {
    public static void main(String[] args) {
        // 创建一个 ArrayList 实例,类型为 String
        List<String> list = new ArrayList<>();

        // 添加元素
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        // 访问元素
        System.out.println("Element at index 1: " + list.get(1)); // 输出: Banana

        // 修改元素
        list.set(1, "Blueberry");
        System.out.println("Modified list: " + list); // 输出: [Apple, Blueberry, Cherry]

        // 删除元素
        list.remove(2);
        System.out.println("After removal: " + list); // 输出: [Apple, Blueberry]

        // 获取列表大小
        System.out.println("Size of list: " + list.size()); // 输出: 2

        // 检查列表是否为空
        System.out.println("Is list empty? " + list.isEmpty()); // 输出: false

        // 检查列表是否包含某个元素
        System.out.println("Contains 'Apple'? " + list.contains("Apple")); // 输出: true
        
        // 查找元素的索引
        int indexOfBlueberry = list.indexOf("Blueberry");
        System.out.println("Index of 'Blueberry': " + indexOfBlueberry); // 输出:Index of 'Blueberry': 1
        
        
    }
}

在这个示例中,我们创建了一个 ArrayList 实例,并演示了如何添加、访问、修改、删除元素,以及检查列表的状态。

总结

  • List: 是一个接口,定义了一组用于操作有序集合的方法。
  • ArrayList : 是 List 接口的一个实现类,基于动态数组实现,提供高效的随机访问能力。

理解这两者的区别有助于更好地利用 Java 集合框架来管理和操作数据。

相关推荐
江江爱编程9 小时前
java零基础保姆级教学01
java·开发语言
9624569 小时前
餐饮 SaaS 优惠券系统架构演进(三):优惠计算引擎——商品级计价、冲突策略与优惠分摊
java·数据库·spring boot
vx_Biye_Design9 小时前
expressDeepSeek社团咨询助手的学生社团管理系统60746-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·课程设计·express
vx_Biye_Design9 小时前
springboot宠物领养与救助平台64334-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·mysql·课程设计·宠物
泡茶喝茶写代码9 小时前
A股量化数据工程:从 REST 接口到策略信号(第 5 篇):板块成分股映射与对齐
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据接口
沐晓时光9 小时前
C语言入门,深入理解指针(2)
c语言·开发语言
vx_Biye_Design9 小时前
django就业信息推荐系统61953-计算机课程设计、毕业设计
java·vue.js·spring boot·python·架构·django·课程设计
2601_9628857210 小时前
如何用 Python 做均线粘合选股?(多头发散前的变盘候选)
开发语言·python
知守观10 小时前
HTML 转 PDF 方案实战:iTextPDF 与 wkhtmltopdf 踩坑复盘,附 Flying Saucer / openhtmltopdf 选型对比
java·后端
2601_9620715710 小时前
类变量和全局变量的隔离性有什么区别?
java·开发语言·jvm