Java的列表、集合、数组的添加一个元素各自用的什么方法?

JAVA高级篇--Java 数组列表 阅读详情
AI摘要

本文介绍了Java中多种数据结构添加元素的方法。列表、集合、树形结构、队列、链表、向量等都有各自的添加方式,如列表用add(),映射用put()等。数组添加元素通常需创建新数组或用动态容器。还提及堆和并发集合等扩展内容。

在Java中,列表(List)、集合(Set)和数组(Array)添加元素的方法有所不同,以下是具体说明及示例:


add() 添加元素

一、列表(List)

常用实现类包括ArrayList和LinkedList,核心方法为add():

  1. 末尾添加
    add(Object o):

    List<String> list = new ArrayList<>();
    list.add("Java");  // 添加元素到末尾
    
  2. 指定位置插入
    add(int index, Object o):

    list.add(1, "Python");  // 在索引1处插入元素,原元素后移
    
  3. 批量添加
    addAll(Collection<?> c)或Collections.addAll():

    List<String> list2 = Arrays.asList("C++", "Go");
    list.addAll(list2);  // 批量添加集合元素
    

二、集合(Set)

常用实现类如HashSet、TreeSet,添加元素需满足唯一性:

  1. 基本添加
    add(Object o):

    Set<String> set = new HashSet<>();
    set.add("Apple");  // 成功返回true,重复元素返回false
    
  2. 有序集合的添加
    如TreeSet会自动按自然顺序排序:

    Set<Integer> sortedSet = new TreeSet<>();
    sortedSet.add(3);
    sortedSet.add(1);  // 最终顺序为1, 3
    

对比总结

数据结构添加方法特点
数组Arrays.copyOf()或转ArrayList固定长度,需手动扩容或转换容器
列表(List)add()、addAll()支持动态扩容和指定位置插入
集合(Set)add()元素唯一,自动去重,无序(TreeSet有序)

示例完整代码
数组转列表并添加元素:

int[] arr = {1, 2, 3};
List<Integer> list = new ArrayList<>(Arrays.asList(arr));
list.add(4);
list.add(1, 99);  // 插入到索引1处
System.out.println(list);  // 输出[1, 99, 2, 3, 4]

集合去重示例:

Set<String> cities = new HashSet<>();
cities.add("Beijing");
cities.add("Shanghai");
cities.add("Beijing");  // 重复元素不会被添加
System.out.println(cities);  // 输出[Beijing, Shanghai]

如需动态处理大量元素,推荐优先使用ArrayList(列表)或HashSet(集合)。

三、树形结构(Tree)

Java 标准库未直接提供树结构,但可通过 TreeSet 或 TreeMap 间接实现有序存储:

TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(5);  // 自动按升序排列
treeSet.add(3);  // 内部顺序变为3, 5

四、队列(Queue)

队列遵循 先进先出(FIFO) 原则,常用实现类为 LinkedList 和 PriorityQueue。

  1. 普通队列
    使用 add() 或 offer() 方法在队尾添加元素:

    Queue<Integer> queue = new LinkedList<>();
    queue.add(10);  // 添加元素,队列满时抛异常
    queue.offer(20); // 添加元素,队列满时返回false
    
  2. 优先级队列
    PriorityQueue 根据元素自然顺序或自定义比较器排序:

    Queue<Integer> pq = new PriorityQueue<>();
    pq.add(5);  // 添加元素并自动排序
    pq.add(1);  // 内部顺序变为1, 5
    

五、链表(LinkedList)

LinkedList 同时实现了 List 和 Deque,支持灵活插入:

  1. 任意位置插入
    使用 add(int index, E element):
    LinkedList<String> linkedList = new LinkedList<>();
    linkedList.add(0, "First");  // 在索引0处插入
    linkedList.add(1, "Second");
    

六、向量(Vector)

向量是线程安全的动态数组,使用 addElement() 或 add() 添加:

Vector<Integer> vector = new Vector<>();
vector.addElement(100);  // 传统方法
vector.add(200);         // 与ArrayList兼容

其他数据结构的添加方法

Java 中除了列表(List)、集合(Set)和数组(Array)之外,还有其他多种数据结构支持元素的添加操作。以下是其他常见数据结构及其添加元素的示例和方法:


双端队列(Deque)

双端队列支持从两端添加元素,实现类为 ArrayDeque。

  1. 头部/尾部添加
    使用 addFirst() 和 addLast():
    Deque<String> deque = new ArrayDeque<>();
    deque.addFirst("Front");  // 头部添加
    deque.addLast("End");     // 尾部添加
    

put()- 映射(Map)

映射存储键值对,常用实现类为 HashMap 和 TreeMap。

  1. 添加键值对
    使用 put() 方法:
    Map<String, Integer> map = new HashMap<>();
    map.put("Apple", 10);  // 键不存在时新增
    map.put("Banana", 20);
    

push() - 栈(Stack)

栈遵循 后进先出(LIFO) 原则,实现类为 Stack(已过时)或 Deque 模拟。

  1. 使用 Deque 模拟栈
    Deque<Integer> stack = new ArrayDeque<>();
    stack.push(1);  // 压栈
    stack.push(2);  // 栈顶元素变为2
    

数组(Array)

数组是固定长度的数据结构,添加元素通常需要创建新数组或使用动态容器:

  1. 直接赋值
    通过索引直接赋值,但需确保索引有效且数组已初始化:

    int[] arr = new int[3];
    arr[0] = 1;  // 直接赋值到索引0的位置
    
  2. 扩容后添加
    使用Arrays.copyOf()创建新数组并添加元素:

    int[] arr = {1, 2, 3};
    arr = Arrays.copyOf(arr, arr.length + 1);  // 扩容
    arr[arr.length - 1] = 4;  // 添加新元素
    
  3. 转换为ArrayList动态添加
    将数组转为ArrayList,利用其add()方法:

    String[] arr = {"a", "b"};
    List<String> list = new ArrayList<>(Arrays.asList(arr));
    list.add("c");  // 添加新元素
    arr = list.toArray(new String[0]);  // 转回数组
    

总结

数据结构添加方法示例类适用场景
队列(Queue)add(), offer()LinkedList任务调度、广度优先搜索
双端队列(Deque)addFirst(), addLast()ArrayDeque需要两端操作的场景
映射(Map)put()HashMap键值对存储、快速查找
栈(Stack)push()ArrayDeque函数调用栈、表达式求值
链表(LinkedList)add(index, element)LinkedList频繁插入/删除、中间操作
向量(Vector)addElement()Vector线程安全的动态数组需求

扩展说明:

  • 堆(Heap):Java 中通过 PriorityQueue 实现堆结构,添加元素会自动调整堆结构。
  • 并发集合:如 ConcurrentHashMap 和 CopyOnWriteArrayList,适用于多线程环境,但添加方法类似普通集合。

如果需要更具体的实现细节或线程安全方案,可进一步查看相关类的官方文档或源码实现。

Java集合-List 1、ArrayList 是采用动态数组来存储元素的,它允许直接用下标号来直接查找对应的元素。但是,但是插入元素要涉及数组元素移动及内存的操作。总结:查找速度快,插入操作慢。 2、LinkedList 是采用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快 问题:有一批数据要存储,要求存储这批数据不能出现重复数据,ArrayList、LinkedList都没法满足需求。解决办法:使用 set集合。 阅读详情

相关推荐

java 数组添加元素(附完整源码)

java 数组添加元素(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 393

java 数组添加元素的两种方法

java 数组添加元素的两种方法

weixin_43860634的博客 2万+

第六章 汇川技术InoProShop入门之modbusTCP从站协议解读

摘要:ModbusTCP从站协议是Modbus协议在TCP/IP网络上的扩展,作为服务器端被动响应主站请求。它采用MBAP+PDU帧结构,通过IP地址和502端口实现网络通信,支持标准功能码(如读/写寄存器、线圈)。相比传统串行Modbus,具有高速传输、远距离通信优势。从站需解析请求、执行操作并返回响应,同时处理错误校验和并发连接。该协议广泛应用于智能传感器、PLC等工业设备,实现高效可靠的主从数据交互。

zyfucking2010的博客 1438

Java 向数组中添加元素

一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度。 向数组中添加元素思路 第一步:把数组转化为集合 list = Arrays.asList(array); 第二步:向集合中添加元素 list.add(index, element); 第三步:将集合转化为数组 list.toArray(newArray); 例: public static void m...

大家好,我是云村的王子 1万+

STM32F4的sct文件理解

原文地址http://blog.sina.com.cn/s/blog_898f36590100ya2l.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...

weixin_34008805的博客 995

卡诺图化简法注意事项+竞争冒险知识点总结

今天反思以下卡诺图化简法中的注意事项。 卡诺图看起来简单,但如果不熟悉的话很容易出错,因此要对画圈的规则比较熟悉。

weixin_42415266的博客 1万+

java中数组插入元素

已知有个升序的数组,要求插入一个元素,该数组顺序依然是升序,//比如:[10,12,45,90],添加23后,数组为[10,12,23,45,90]

weixin_50208718的博客 2361

Cesium进阶学习四、shadertoy(着色器)

Cesium进阶学习着色器

程迷学习的博客 4322

java添加字符串数组_java – 如何将字符串数组的元素添加到字符串数组列表?...

你已经有了内置的方法: –List species = Arrays.asList(speciesArr);注意: – 您应该使用List< String>不是ArrayList< String>种类。Arrays.asList返回一个不同的ArrayList – > java.util.Arrays.ArrayList,不能被类型转换为java.util.Array...

weixin_35066076的博客 5394

SOI LDMOS器件的Sentaurus TCAD建模与关键电学特性仿真研究

本文研究了SOI LDMOS器件的TCAD建模与电学特性仿真。通过Sentaurus TCAD平台建立了单RESURF结构的SOI LDMOS模型,详细阐述了器件结构原理和RESURF耐压机制。研究采用SDE进行几何定义和掺杂配置,在Sentaurus Device中构建了完整的物理模型体系,包括迁移率、复合和碰撞电离模型。通过系统仿真提取了器件的转移特性、输出特性和击穿特性等关键参数,分析了各参数对性能的影响规律。研究结果为功率半导体器件的仿真建模提供了规范化参考,有助于优化SOI LDMOS的性能设计。

huanghm88的专栏 134

MATLAB与ROS联合仿真——订阅ROS消息类功能模块介绍

MATLAB与ROS联合仿真——订阅ROS消息类功能模块介绍 (1)输入参数:无 (2)输出参数:Xr和Yr是小车当前在世界坐标系下的坐标 (3)主要作用:作为ROS与MATLAB的通讯接口,从ROS中订阅小车当前的位置信息,并输出 (4)内部结构: (5)具体实现过程:通过ROS工具箱中的Subscribe模块从ROS中订阅话题/gazebo/link_statesa 通过Bus Selector模块选择ROS总线中的Pose

慕羽★的博客 2699

leetcode-剑指 Offer II 084. 含有重复元素集合的全排列 【java】

剑指 Offer II 084. 含有重复元素集合的全排列 给定一个可包含重复数字的整数集合 nums ,按任意顺序 返回它所有不重复的全排列。 示例 1: 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 示例 2: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 提示: 1 <= nums.length <= 8 -10 <= nums[i]

taylorswift的博客 383

ROS Motion Planning运动规划库安装方法及进阶使用方法详细介绍

​今天偶然发现了一个优质的运动规划库:ai-winter/ros_motion_planning,比较适合从事ROS移动机器人运动规划研究领域的小伙伴学习和使用,相比于莱斯大学Kavraki实验室提供的开源的著名运动规划库OMPL、或着我之前介绍过的zhm-real开源的zhm-real/MotionPlanning和zhm-real/PathPlanning运动规划库,今天介绍的ROS Motion Planning运动规划库与ROS机器人中常用的Navigation导航框架的兼容性更好,库中的运动规划

慕羽★的博客 5578

Java初学之集合的ArrayList的常用方法

我们大体先了解一下集合的体系图,便能够够清晰明了的了解集合的方法 代码示例: import java.util.ArrayList; import java.util.Collection; import com.heima.bean.Student; /* * 1.add方法如果是List集合一直都返回true,因为List集合可以存储重复元素, * 如果是Set集合存储重复元素的时候,...

Limerence的博客 242

RH850从0搭建Autosar开发环境系列讲解 - 总目录

Davinci Autosar实战开发从0构建开发能力。OS,COM,DCM,BSWMM,ECUM,VLINK,XCP,MEMMAP等模块配置,带你熟悉运行的autosar代码,包括MICROSAR的启动运行,使用GreenHills生成运行的hex。

weixin_42412049的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java之数组转集合&集合转数组

一、数组转换为集合 需要注意的是,转换只能转换为List集合。那么为什么不能转换为Set集合呢? 原因是:Set不能存放重复元素,所以若转换为Set集合可能出现丢失元素的情况。。。 数组转换为集合使用的是数组的工具类Arrays的静态方法asList。查看API文档可知该方法返回由指定数组支持的固定大小的列表。 eg: import java.util.Arrays; import java.u...

Alive的博客 6万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java如何向数组里添加元素

向数组里添加一个元素怎么添加,一般数组是不能添加元素的,因为数组在初始化时就已定好长度了,不能改变长度。 比如: String[] str = new String[5]; System.out.println(Arrays.toString(str)); String[] str2 = new String[]{"a", "b"}; System.out.println(Arrays.toString(str2)); Stri

zhangvalue的博客 11万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java怎么给数组添加数据_java如何向数组里添加元素

本文收集整理关于java如何向数组里添加元素的相关议题,使用内容导航快速到达。内容导航:Q1:java数组如何循环添加元素public static void main(String[] args) {int a=9;int b=5;int c=2;int d=7;int []sult=new int[4];for(int i=0;i{switch(i){case 0:sult[i]=a;cont...

weixin_34666478的博客 1万+

Python 中如何向列表或数组添加元素

编程中的数组是一个有序的项目集合,所有的项目都需要是相同的数据类型。然而,与其它编程语言不同,数组在 Python 中不是一个内置的数据结构。Python 使用列表取代传统的数组。列表本质上是动态数组,是 Python 中最常见的和最强大的数据结构之一。你可以把它们想象成有序的容器。它们将同类相关的数据存储和组织在一起。存储在一个列表中的元素可以是任何数据类型。可以有整数列表、浮点数列表、字符串列表,以及任何其它内置 Python 数据类型的列表。

Python热爱者的博客 2884

Python如何向列表或数组添加元素

编程中的数组是一个有序的项目集合,所有的项目都需要是相同的数据类型。然而,与其它编程语言不同,数组在 Python 中不是一个内置的数据结构。Python 使用列表取代传统的数组。列表本质上是动态数组,是 Python 中最常见的和最强大的数据结构之一。你可以把它们想象成有序的容器。它们将同类相关的数据存储和组织在一起。存储在一个列表中的元素可以是任何数据类型。可以有整数列表、浮点数列表、字符串列表,以及任何其它内置 Python 数据类型的列表。

chengxuyuanlaow的博客 1016

把集合元素转成一个数组

把集合元素转成一个数组 package cn.tedu.collection.list; import java.util.ArrayList; import java.util.Collection; import java.util.List; public class StringToArrarys { public static void main(String[] args) {...

qq_45453185的博客 1142

创建ArrayList集合对象并添加元素

ArrayListDemo.java import java.util.ArrayList; /* * 为什么出现集合类: * 我们学习的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象来体现的。 * 为了方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想对多个对象进行存储, * 就不能是...

weixin_30300225的博客 5358

java如何将列表转化为数组_java中 列表,集合,数组之间的转换

java中 列表,集合,数组之间的转换java中 列表,集合,数组之间的转换java中 列表,集合,数组之间的转换List和Set都是接口,它们继承Collection(集合),集合里面任何数据类型都可以添加List是有序的队列,可以用重复的元素;而Set是数学概念中的集合,不能有重复的元素。数组 长度固定 可存储任何数据类型 集合 长度可变(包括:list,set)可存储任何数据类...

weixin_34551573的博客 3197

java队列转集合_java中 列表,集合,数组之间的转换

java中 列表,集合,数组之间的转换java中 列表,集合,数组之间的转换java中 列表,集合,数组之间的转换List和Set都是接口,它们继承Collection(集合),集合里面任何数据类型都可以添加List是有序的队列,可以用重复的元素;而Set是数学概念中的集合,不能有重复的元素。数组 长度固定 可存储任何数据类型 集合 长度可变(包括:list,set)可存储任何数据类...

weixin_35911221的博客 4178

Python向列表或数组添加元素的讲解

编程中的数组是一个有序的项目集合,所有的项目都需要是相同的数据类型。然而,与其它编程语言不同,数组在 Python 中不是一个内置的数据结构。Python 使用列表取代传统的数组。列表本质上是动态数组,是 Python 中最常见的和最强大的数据结构之一。你可以把它们想象成有序的容器。它们将同类相关的数据存储和组织在一起。存储在一个列表中的元素可以是任何数据类型。可以有整数列表、浮点数列表、字符串列表,以及任何其它内置 Python 数据类型的列表。

chengxuyuanlaow的博客 839
上一篇: 【JAVA基础】什么情况下可以直接使用类名.方法名调用方法?
下一篇: 软考中级软件设计师全真题
Next2you
博客等级 码龄7年 1238粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Next2you

你真帅!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值