Java集合——list

在Java中,List 是一个继承自 Collection 接口的子接口,表示一个有序的集合,允许重复元素。List 接口定义了一组方法来处理列表中的元素,并且有多个具体实现类,如 ArrayList、LinkedList 和 Vector。

1.主要方法

  • add(E e) :将指定的元素 e 添加到列表的末尾。
  • add(int index, E element) :在指定位置 index 插入元素 element。
  • get(int index) :返回指定位置 index 的元素。
  • set(int index, E element) :用指定的元素 element 替换指定位置 index 的元素。
  • remove(int index) :移除指定位置 index 的元素。
  • indexOf(Object o) :返回指定元素 o 在列表中第一次出现的索引;如果未找到,则返回 -1。
  • lastIndexOf(Object o) :返回指定元素 o 在列表中最后一次出现的索引;如果未找到,则返回 -1。
  • subList(int fromIndex, int toIndex) :返回列表的一个子列表,从 fromIndex(包含)到 toIndex(不包含)。

2.常见实现类

  • ArrayList:底层使用动态数组,提供快速的随机访问,但插入和删除操作可能较慢。

    • 性能特点:对索引的访问非常快,适合频繁读取数据的场景。
    • 线程安全 :ArrayList 不是线程安全的,若需线程安全的 ArrayList,可以使用 Collections.synchronizedList 方法或 CopyOnWriteArrayList。
  • LinkedList:底层使用双向链表,提供快速的插入和删除操作,但随机访问较慢。

    • 性能特点:插入和删除操作较快,适合频繁修改数据的场景。
    • 额外功能 :实现了 Deque 接口,提供了双端队列功能(addFirst、addLast、removeFirst、removeLast 等方法)。
  • Vector :底层使用动态数组,类似于 ArrayList,但它是同步的,即线程安全的。

    • 性能特点 :由于同步机制,Vector 的性能通常低于 ArrayList。
    • 现代使用 :Vector 现在不常用于新的代码,通常推荐使用 ArrayList。

3.遍历list

使用迭代器

java 复制代码
Iterator<E> iterator = list.iterator();
while (iterator.hasNext()) {
    E element = iterator.next();
    // 处理元素
}

增强for

java 复制代码
for (E element : list) {
    // 处理元素
}

传统的for

java 复制代码
for (int i = 0; i < list.size(); i++) {
    E element = list.get(i);
    // 处理元素
}

4.实用工具

Collections 类 :提供了一些静态方法来操作 List,如排序、查找、填充等。

java 复制代码
Collections.sort(list);
Collections.reverse(list);
Collections.fill(list, value);
//Arrays.asList():将数组转换为 List。
List<String> list = Arrays.asList("one", "two", "three");
相关推荐
Pniubi3 小时前
HashMap的扩容和树化边界
java·开发语言
Mikko73 小时前
用 Java 复刻了高中时在塞班上玩的「熔岩矿车」:纯 Swing、零依赖、没有一张图片,一个 jar 双击就能玩
java·游戏开发·swing
知了学历孙老师3 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
Java爱好狂.3 小时前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
秋饼4 小时前
LLM API密钥动态轮换实战:Spring Vault + Spring AI + 多Provider路由
java·ai·技术分享·后端开发
gCode Teacher 格码致知4 小时前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas
发量惊人的中年网工4 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
下页、再停留5 小时前
【C#桌面客户端系列学习-15】生成可视化图表之折线图、柱状图、饼状图
开发语言·c#
ShineWinsu5 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
福兮说6 小时前
JSON 格式正确,数据就可靠吗?我用一份自编配置检查类型与空值
java·前端·json