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

java数据结构--List的介绍

一、什么是List

在 Java 中,Listjava.util包下的一个接口,继承自Collection接口,是 Java 集合框架的重要组成部分。它用于存储有序的、可重复的元素集合,允许通过索引(位置)访问元素。

List 的核心特性:

  • 有序性:元素的插入顺序与存储顺序一致
  • 可重复性:允许包含相同的元素(通过equals()方法判断)
  • 索引访问:可以通过整数索引(从 0 开始)精确访问、修改元素
  • 动态容量:大多数实现类(如ArrayList)会自动扩容,无需手动指定大小

常见的 List 实现类:

  • ArrayList基于动态数组实现,查询效率高,增删效率低(尤其中间位置)
  • LinkedList基于双向链表实现,增删效率高,查询效率低
  • Vector线程安全的动态数组(已基本被ArrayList替代)
  • Stack继承自Vector,实现栈结构(推荐使用Deque替代)

二、List 接口的常见方法

List 接口继承了Collection的所有方法,并增加了针对索引操作的特有方法,主要包括:

2.1.添加元素

  • boolean add(E e):在列表末尾添加元素
  • void add(int index, E element):在指定索引处插入元素
  • boolean addAll(Collection<? extends E> c):添加集合中所有元素到末尾
  • boolean addAll(int index, Collection<? extends E> c):从指定索引开始添加集合元素

2.2.删除元素

  • E remove(int index):删除并返回指定索引处的元素
  • boolean remove(Object o):删除第一个与指定对象相等的元素
  • boolean removeAll(Collection<?> c):删除所有包含在指定集合中的元素
  • void clear():清空列表所有元素

2.3.修改元素

  • E set(int index, E element):替换指定索引处的元素,并返回旧元素

2.4.查询元素

  • E get(int index):返回指定索引处的元素
  • int indexOf(Object o):返回第一个与指定对象相等的元素索引(不存在返回 - 1)
  • int lastIndexOf(Object o):返回最后一个与指定对象相等的元素索引
  • boolean contains(Object o):判断列表是否包含指定元素
  • int size():返回列表元素个数
  • boolean isEmpty():判断列表是否为空

2.5.其他操作

  • List<E> subList(int fromIndex, int toIndex):返回从fromIndex(包含)到toIndex(不包含)的子列表
  • Object[] toArray():将列表转换为数组
  • Iterator<E> iterator():返回迭代器,用于遍历元素

三、List的使用

下面以最常用的ArrayList为例,演示 List 的基本使用:

import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;public class ListExample {public static void main(String[] args) {// 1. 创建List对象(多态写法,推荐使用接口引用)List<String> fruits = new ArrayList<>();// 2. 添加元素fruits.add("Apple");fruits.add("Banana");fruits.add("Cherry");fruits.add(1, "Blueberry"); // 在索引1处插入元素System.out.println("列表元素: " + fruits); // 输出: [Apple, Blueberry, Banana, Cherry]// 3. 访问元素String firstFruit = fruits.get(0);System.out.println("第一个元素: " + firstFruit); // 输出: Apple// 4. 修改元素String oldFruit = fruits.set(2, "Grape");System.out.println("被替换的元素: " + oldFruit); // 输出: BananaSystem.out.println("修改后列表: " + fruits); // 输出: [Apple, Blueberry, Grape, Cherry]// 5. 删除元素String removedFruit = fruits.remove(3);System.out.println("删除的元素: " + removedFruit); // 输出: Cherry// 6. 遍历元素(三种方式)System.out.println("\n遍历方式1: for循环");for (int i = 0; i < fruits.size(); i++) {System.out.println(fruits.get(i));}System.out.println("\n遍历方式2: 增强for循环");for (String fruit : fruits) {System.out.println(fruit);}System.out.println("\n遍历方式3: 迭代器");Iterator<String> iterator = fruits.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}// 7. 其他常用操作System.out.println("\n是否包含Apple: " + fruits.contains("Apple")); // trueSystem.out.println("元素个数: " + fruits.size()); // 3System.out.println("是否为空: " + fruits.isEmpty()); // false// 8. 清空列表fruits.clear();System.out.println("清空后是否为空: " + fruits.isEmpty()); // true}
}

使用场景选择

  • 频繁查询、较少增删时,优先使用ArrayList
  • 频繁在中间位置增删、较少查询时,优先使用LinkedList
  • 需要线程安全时,可使用Collections.synchronizedList(List)包装普通 List

List 是 Java 中最常用的集合类型之一,熟练掌握其用法对于处理有序数据集合至关重要。

http://www.dtcms.com/a/490284.html

相关文章:

  • 网站主页不收录肥城房产网
  • 计算机视觉(opencv)——基于 MediaPipe 的实时面部表情识别
  • C++设计模式_行为型模式_观察者模式Observer(发布-订阅(Publish-Subscribe))
  • 怎么解决ModuleNotFoundError: No module named ‘Cython‘
  • 电子商务网站规划流程手机主题制作网站
  • 微信小程序 Button 组件 open-type 完全指南:从用户信息获取到客服分享的实战应用
  • 阿里云白皮书-架构
  • Rokid 开发空间小程序 实战
  • RAG系统搭建指南:5种主流框架的易用性和效果对比
  • 网站后台怎么添加代码哪里有免费的域名注册建网站
  • Jetson AGX Orin+GMSL+AI视觉开发套件,支持自动驾驶,机器人,工业视觉等应用
  • 【JETSON+FPGA+GMSL+AI】自动驾驶与移动机器人的摄像头如何实现高精度时间同步?
  • Java 设计模式——建造者模式:从原理到实战的极简指南
  • 怎么找做企业网站的雁塔区住房和城乡建设局网站
  • 哈尔滨电商企业服务器托管方案
  • 机器学习基础入门(第五篇):半监督学习与强化学习
  • 建网站解决方案代运营网店公司
  • 网站建设网页制作软件wordpress 移动到回收站发生错误
  • 5G安全深入解析:EAP-AKA、EAP-AKA‘与5G-AKA详解
  • YOLO 系列演进:从 V1 到 V2 的目标检测革命
  • 云栖实录|MaxCompute全新升级:AI时代的原生数据仓库
  • 基于Multi-Agent开发的SmartCare系统自动化运维管家
  • 终结浏览器隐患:自动化安全审计与报表
  • 笔记本卡顿,拖慢的不止是CAD看图评审速度
  • 电脑被捆绑软件缠上?3 步根治:紧急断网 + 深度清理 + 长效防护
  • 网站专业优化商城购物网站开发背景
  • 哪家做外贸网站好沈阳高端网页
  • GPU服务器深度解析:H100/H200的“机头”与“模组”架构详解
  • javaWeb-html、css-常见标签样式
  • 开发组件漏洞