java-初识List

List:

List 是一个接口,属于 java.util 包,用于表示有序的元素集合。List 允许存储重复元素,并且可以通过索引访问元素。它是 Java 集合框架(Java Collections Framework)的一部分

特点:

  • 有序集合:List 中的元素按照插入顺序排列,可以通过索引(从 0 开始)访问元素。
  • 允许重复元素:List 可以包含多个相同的元素。
  • 允许 null 元素:List 可以包含 null 值。
  • 动态大小:List 的大小可以动态调整,不像数组那样固定。

常用实现类:

  • ArrayList:基于动态数组实现,支持快速随机访问,但在中间插入或删除元素时性能较差。
  • LinkedList:基于双向链表实现,适合频繁的插入和删除操作,但随机访问性能较差。
  • Vector:与 ArrayList 类似,但是线程安全的(同步的),性能较低。
  • Stack:继承自 Vector,实现了栈数据结构(后进先出)。

常用方法:

  • add(E e):将元素添加到列表末尾。
  • add(int index, E element):在指定位置插入元素。
  • get(int index):获取指定位置的元素。
  • remove(int index):移除指定位置的元素。
  • remove(Object o):移除第一个匹配的元素。
  • set(int index, E element):替换指定位置的元素。
  • size():返回列表中的元素数量。
  • isEmpty():判断列表是否为空。
  • contains(Object o):判断列表是否包含指定元素。
  • indexOf(Object o):返回指定元素第一次出现的索引。
  • clear():清空列表中的所有元素。
  • iterator():返回一个迭代器,用于遍历列表。

示例代码

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        // 创建一个 ArrayList
        List<String> list = new ArrayList<>();

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

        // 访问元素
        System.out.println("First element: " + list.get(0)); // 输出: Apple

        // 修改元素
        list.set(1, "Blueberry"); // 将 "Banana" 替换为 "Blueberry"

        // 遍历列表
        for (String fruit : list) {
            System.out.println(fruit);
        }

        // 删除元素
        list.remove("Cherry");

        // 判断是否包含某个元素
        System.out.println("Contains Apple? " + list.contains("Apple")); // 输出: true

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

总结

List 是 Java 中非常常用的集合类型,适用于需要有序存储和访问元素的场景。根据具体需求,可以选择 ArrayList、LinkedList 或其他实现类。List 提供了丰富的操作方法,能够满足大多数集合操作的需求

原理传送门

list源码梳理

相关推荐
可问 可问春风15 分钟前
Spring MVC 核心组件详解
java·spring·mvc
好奇的菜鸟1 小时前
在IDEA中连接达梦数据库:详细配置指南
java·数据库·intellij-idea
山海不说话1 小时前
从零搭建微服务项目Pro(第2-2章——JSR303自定义文件校验+整合至微服务公共模块)
java·spring boot·后端·spring·微服务
Cloud_.2 小时前
Apifox Helper 自动生成API接口文档
java·ide·intellij-idea
知识浅谈4 小时前
@Validate 注解的使用-分组案例很有用
java·springboot
Trouvaille ~4 小时前
【Java篇】一法不变,万象归一:方法封装与递归的思想之道
java·开发语言·面向对象·javase·递归·方法·基础入门
Zhava4 小时前
MybatisPlus中的customSqlSegment动态拼接where条件
java·mybatis
极客先躯4 小时前
高级java每日一道面试题-2025年2月26日-框架篇[Mybatis篇]-Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式 ?
java·mybatis·嵌套映射·resulttype属性·resultmap属性·results注解·列名别名
qq_529835355 小时前
Java实现死锁
java·开发语言·python
牧小七5 小时前
Java --- 根据身份证号计算年龄
java·开发语言