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源码梳理

相关推荐
马士兵教育2 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
snow@li3 小时前
Java:理解 Gradle / 后端项目的管家 / 打包SpringBoot 应用 / 完成编译、下载依赖、运行测试、打包 JAR/WAR / 速查表
java
云烟成雨TD3 小时前
Spring AI 1.x 系列【57】动态工具发现:Tool Search Tool
java·人工智能·spring
zfoo-framework3 小时前
[修改代码使用]codex官方app中使用中转(不需要cc-switch) 1.config.toml 2.sk方式登录
java
逍遥德3 小时前
MQTT教程详解-05.SpringBoot集成mqtt client 性能分析
java·spring boot·spring·mt
云烟成雨TD4 小时前
Spring AI 1.x 系列【54】Retry 机制分析
java·人工智能·spring
weixin_523185324 小时前
Collections.unmodifiableMap详解:真的不可修改吗?
java·linux·前端
点燃大海4 小时前
SpringAI构建智能体
java·spring boot·spring·springai智能体
xier_ran4 小时前
【infra之路】02_RadixAttention与KV_Cache管理
java·spring boot·spring
黑马师兄4 小时前
RAG混合检索深度解析:让AI真正找到你要的内容
java·人工智能·ai·agent·rag·ai-native