Java中的LIst

在Java中,List接口是集合框架(Collections Framework)的一部分,用于表示有序的集合(也称为序列)。List允许存储重复的元素,并且可以通过索引访问元素。以下是对Java中List的详细介绍:

 1. List接口概述

 有序性:List中的元素是有序的,可以通过索引访问。

 允许重复:List允许存储重复的元素。

 动态调整大小:List可以根据需要动态调整大小。

 2. List接口的主要实现类

Java提供了多个List接口的实现类,常用的包括:

 a. ArrayList

 实现方式:基于动态数组实现。

 特点:

   访问速度快(通过索引访问的时间复杂度为O(1))。

   适合频繁的随机访问。

   插入和删除操作在中间位置时性能较低(需要移动元素)。

 使用场景:适用于需要频繁随机访问元素的场景。

import java.util.ArrayList;
import java.util.List;public class ArrayListExample {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");System.out.println(list);}
}

b. LinkedList

 实现方式:基于双向链表实现。

 特点:

   插入和删除操作在中间位置时性能较高(不需要移动元素,只需调整指针)。

   随机访问性能较低(需要从头或尾遍历链表)。

 使用场景:适用于需要频繁在中间位置插入和删除元素的场景。

import java.util.LinkedList;
import java.util.List;public class LinkedListExample {public static void main(String[] args) {List<String> list = new LinkedList<>();list.add("Apple");list.add("Banana");list.add("Cherry");System.out.println(list);}
}

c. Vector

 实现方式:类似于ArrayList,但线程安全。

 特点:

   所有方法都是同步的(线程安全)。

   性能比ArrayList低,因为同步开销较大。

 使用场景:适用于多线程环境下的集合操作。

import java.util.List;
import java.util.Vector;public class VectorExample {public static void main(String[] args) {List<String> list = new Vector<>();list.add("Apple");list.add("Banana");list.add("Cherry");System.out.println(list);}
}

d. Stack

 实现方式:继承自Vector,提供了栈(LIFO)的行为。

 特点:

   提供了push(), pop(), peek()等方法。

   不推荐使用,因为Deque接口提供了更完整和现代的栈操作。

 使用场景:需要栈行为的场景,但更推荐使用Deque的实现类如ArrayDeque。

import java.util.Stack;public class StackExample {public static void main(String[] args) {Stack<String> stack = new Stack<>();stack.push("Apple");stack.push("Banana");stack.push("Cherry");System.out.println(stack.pop()); // 输出: CherrySystem.out.println(stack.peek()); // 输出: Banana}
}

3. List接口的主要方法

以下是List接口中一些常用的方法:

 添加元素:

   boolean add(E e): 在列表末尾添加元素。

   void add(int index, E element): 在指定位置插入元素。

 删除元素:

   boolean remove(Object o): 删除第一个匹配的元素。

   E remove(int index): 删除指定位置的元素。

 获取元素:

   E get(int index): 获取指定位置的元素。

 设置元素:

   E set(int index, E element): 替换指定位置的元素。

 查找元素:

   int indexOf(Object o): 返回第一个匹配元素的索引。

   int lastIndexOf(Object o): 返回最后一个匹配元素的索引。

 其他方法:

   int size(): 返回列表的大小。

   boolean isEmpty(): 判断列表是否为空。

   void clear(): 清空列表。

   boolean contains(Object o): 判断列表中是否包含指定元素。

   List<E> subList(int fromIndex, int toIndex): 返回列表的子列表。

4. 遍历List的方法

a. 使用传统的for循环

for (String item : list) {System.out.println(item);
}

 c. 使用迭代器(Iterator)

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {System.out.println(iterator.next());
}

 d. 使用forEach和Lambda表达式

list.forEach(item -> System.out.println(item));

e. 使用Stream API

list.stream().forEach(System.out::println);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/493060.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DB-GPT 智谱在线模型配置

LLM_MODELzhipu_proxyllm PROXY_SERVER_URLhttps://open.bigmodel.cn/api/paas/v4/chat/completions ZHIPU_MODEL_VERSIONglm-4 ZHIPU_PROXY_API_KEY70e8ec7113882ff5478fcecaa47522479.ExY2LyjcvWmqrTAf

【GCC】2015: draft-alvestrand-rmcat-congestion-03 机器翻译

腾讯云的一个分析,明显是看了这个论文和草案的 : 最新的是应该是这个 A Google Congestion Control Algorithm for Real-Time Communication draft-ietf-rmcat-gcc-02 下面的这个应该过期了: draft-alvestrand-rmcat-congestion-03

python:用 sklearn 构建线性回归模型,并评价

编写 test_sklearn_6.py 如下 # -*- coding: utf-8 -*- """ 使用 sklearn 估计器构建线性回归模型 """ import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib import rcParamsfrom sklearn import dataset…

系统思考—战略共识

当企业不增长的时候&#xff0c;是忙着救火&#xff0c;还是在真正解决问题&#xff1f; 最近遇到很多领导者&#xff0c;把精力放在“管理”上&#xff0c;希望通过抓细节提升效率&#xff0c;解决经营问题。结果呢&#xff1f;全公司上上下下忙成了一团乱麻&#xff0c;但不…

web3跨链桥协议-Nomad

项目介绍 Nomad是一个乐观跨链互操作协议。通过Nomad协议&#xff0c;Dapp能够在不同区块链间发送数据&#xff08;包括rollups&#xff09;&#xff0c;Dapp通过Nomad的合约和链下的代理对跨链数据、消息进行验证、传输。其安全通过乐观验证机制和欺诈证明制约验证者实现&…

微信小程序实现画板画布自由绘制、选择画笔粗细及颜色、记录撤回、画板板擦、清空、写字板、导出绘图、canvas,开箱即用

目录 画板创建canvas绘制及渲染画笔粗细功能实现画笔颜色选择画笔痕迹撤回、板擦、画布清空canvas解析微信小程序中 canvas 的应用场景canvas 与 2D 上下文、webgl 上下文的关系图像的加载与绘制说明代码说明画板创建 canvas绘制及渲染 在wxml添加对应的canvas标签代码,并在j…

网站灰度发布?Tomcat的8005、8009、8080三个端口的作用什么是CDNLVS、Nginx和Haproxy的优缺点服务器无法开机时

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

解锁BL后的K40降级

1 下载刷机工具 https://miuiver.com/miflash/ 2、下载刷机包 https://xiaomirom.com/series/ 下载ROM包&#xff0c;12.0.8比较好 3 打开第一步下载的刷机工具 打开首次安装驱动&#xff0c; 接下来先选择个重要的东西&#xff0c;如果不想重新上BL那就选择全部删除…

蓝桥杯刷题——day8

蓝桥杯刷题——day8 题目一题干解题思路代码 题目二题干解题思路代码 题目一 题干 N 架飞机准备降落到某个只有一条跑道的机场。其中第i架飞机在 Ti时刻到达机场上空&#xff0c;到达时它的剩余油料还可以继续盘旋 Di个单位时间&#xff0c;即它最早可以于 Ti时刻开始降落&am…

redis数据类型:list

list 的相关命令配合使用的应用场景&#xff1a; 栈和队列&#xff1a;插入和弹出命令的配合&#xff0c;亦可实现栈和队列的功能 实现哪种数据结构&#xff0c;取决于插入和弹出命令的配合&#xff0c;如左插右出或右插左出&#xff1a;这两种种方式实现先进先出的数据结构&a…

IDEA中解决Edit Configurations中没有tomcat Server选项的问题

今天使用IDEA2024专业版的时候,发现Edit Configurations里面没有tomcat Server,最终找到解决方案。 一、解决办法 1、打开Settings 2、搜索tomcat插件 搜索tomcat插件之后,找到tomcat 发现tomcat插件处于未勾选状态,然后我们将其勾选保存即可。 二、结果展示 最后,再次编…

复习打卡大数据篇——Hadoop HDFS 02

目录 1. HDFS辅助工具 2. namenode安全模式 1. HDFS辅助工具 跨集群数据拷贝 当我们需要跨集群进行文件数据的拷贝时可以用&#xff1a; hadoop distcp 集群1的某个文件路径 要拷贝到集群2的地址路径 文件归档工具archive 由于HDFS的块的数量取决于文件的大小和数量&…

Mamba安装环境和使用,anaconda环境打包

什么是mamba Mamba是一个极速版本的conda&#xff0c;它是conda的C重新实现&#xff0c;使用多线程并行处理来加速包和依赖项的下载。 Mamba旨在提高安装、更新和卸载Python包的速度&#xff0c;同时保持与conda相同的兼容性和命令行接口。 Mamba的核心部分使用C实现&#xff…

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导

Sigrity System Explorer Snip Via Pattern From Layout模式从其它设计中截取过孔模型和仿真分析操作指导 Sigrity System Explorer Snip Via Pattern From Layout模式支持从其它设计中截取过孔模型用于仿真分析,同样以差分模板为例 具体操作如下 双击打开System Explorer软件…

顺序表的操作

注意位序和数组下标的关系 插入&#xff1a; 插入的时间复杂度&#xff1a; 最深层语句&#xff1a; 最好情况 最坏情况 平均情况 删除&#xff1a; 查找&#xff1a;

以腾讯混元模型为例,在管理平台上集成一个智能助手

背景 前几天&#xff0c;公司的同事们一起吃了个饭&#xff0c;餐桌上大家聊到大模型的落地场景。我个人在去年已经利用百度千帆平台写过案例&#xff0c;并发过博客&#xff08;传送门&#x1f449;&#xff1a;利用文心千帆打造一个属于自己的小师爷&#xff09;&#xff0c…

计算机基础 试题

建议做的时候复制粘贴,全部颜色改为黑色,做完了可以看博客对答案。 一、单项选择题(本大题共25小题,每小题2分,共50分〉 1.计算机内部采用二进制数表示信息,为了便于书写,常用十六进制数表示。一个二进制数0010011010110用十六进制数表示为 A.9A6 B.26B C.4D6 D.…

[机器学习]XGBoost(3)——确定树的结构

XGBoost的目标函数详见[机器学习]XGBoost&#xff08;2&#xff09;——目标函数&#xff08;公式详解&#xff09; 确定树的结构 之前在关于目标函数的计算中&#xff0c;均假设树的结构是确定的&#xff0c;但实际上&#xff0c;当划分条件不同时&#xff0c;叶子节点包含的…

【AI驱动的数据结构:包装类的艺术与科学】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 包装类装箱和拆箱阿里巴巴面试题 包装类 在Java中基本数据类型不是继承来自Object&#xff0c;为了…

探索Moticon智能传感器鞋垫OpenGo的功能与优势

Moticon智能传感器鞋垫OpenGo是一款专为运动科学和临床研究设计的先进工具。它通过13枚压力传感器、1枚3D加速器和1枚温度传感器&#xff0c;实时监测脚部的压力分布和步态变化。用户可以通过配套的Beaker应用&#xff0c;将这些数据以图表形式呈现&#xff0c;便于分析和理解。…