Java中List与数组之间的相互转换
一、List列表与对象数组
List列表中存储对象,如List<Integer>、List<String>、List<Person>,对象数组中同样存储相应的对象,如Integer[]、String[]、Person[],对象数组与对象List的转换可通过如下方式实现:
(一)对象List转对象数组
1、toArray()方法
直接调用对象List的toArray()方法转换为对象数组,该方法的参数是T[],因此需要传入对应的对象数组构造函数,指定数组的长度,如下所示:
| 1 2 3 |
|
2、Stream流的toArray()方法
通过Stream流的toArray()方法,传入参数是对应对象的构造方法的方法引用,使用方式如下所示:
| 1 2 3 |
|
这个toArray()方法是Stream类下的,该方法说明如下所示:
/*** Returns an array containing the elements of this stream, using the* provided {@code generator} function to allocate the returned array, as* well as any additional arrays that might be required for a partitioned* execution or for resizing.** <p>This is a <a href="package-summary.html#StreamOps" rel="external nofollow" >terminal* operation</a>.** @apiNote* The generator function takes an integer, which is the size of the* desired array, and produces an array of the desired size. This can be* concisely expressed with an array constructor reference:* <pre>{@code* Person[] men = people.stream()* .filter(p -> p.getGender() == MALE)* .toArray(Person[]::new);* }</pre>** @param <A> the element type of the resulting array* @param generator a function which produces a new array of the desired* type and the provided length* @return an array containing the elements in this stream* @throws ArrayStoreException if the runtime type of the array returned* from the array generator is not a supertype of the runtime type of every* element in this stream*/
<A> A[] toArray(IntFunction<A[]> generator);
该方法传入一个函数式接口,该接口对应一个方法引用,作用是创建一个新的指定类型和长度的数组,因此我们传入的参数就是一个Integer[]数组的构造方法的方法引用,最终得到的也就是一个Integer[]数组。
3、for循环
过于简单,不再赘述。
(二)、对象数组转对象List
1、使用Arrays.asList()
该方法通过传入一个对象数组,最后转换为一个对象List,如下所示:
| 1 2 3 |
|
asList方法传入的参数是一个可变参数,因此既可以传入多个参数,也可以传入一个数组,如下所示:
/*** Returns a fixed-size list backed by the specified array. (Changes to* the returned list "write through" to the array.) This method acts* as bridge between array-based and collection-based APIs, in* combination with {@link Collection#toArray}. The returned list is* serializable and implements {@link RandomAccess}.** <p>This method also provides a convenient way to create a fixed-size* list initialized to contain several elements:* <pre>* List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");* </pre>** @param <T> the class of the objects in the array* @param a the array by which the list will be backed* @return a list view of the specified array*/
@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {return new ArrayList<>(a);
}
2、使用Collections.addAll()
通过Collections集合类的static方法将一个对象数组转换为对象List,注意首先要创建出一个对象List,使用方式如下所示:
| 1 2 3 4 |
|
3、使用Stream中的Collector
JDK8之后可以使用Stream流来执行转换操作,通过Stream流的终结操作collect来指定将要转换得到的List:
| 1 2 3 |
|
4、for循环
过于简单,不再赘述。
二、List列表与基本数据类型数组
上面我们介绍了对象List列表与对象数组之间的转换,但是有些情况需要直接将对象List转换为基本数据类型数组,如List<Integer>转int[]这种情况,下面详细介绍。
(一)、对象List转基本数据类型数组
1、Stream流执行转换
通过Stream流执行转换,如List<Integer>转换为int[],通过Stream流的mapToInt()可将每个Integer转换为int,再输出为int数组,如下所示:
| 1 2 3 4 5 6 |
|
2、for循环
过于简单,不再赘述。
(二)、基本数据类型数组转对象List
1、Stream流转换
以int[]数组来举例,通过Stream流的mapToObj()方法先将int[]数组中每个int值转换为Integer包装类,再通过collect执行终结操作转换为Integer的List。
int[] integersArray = {1, 2, 3};
// 1、Stream流转换, 需要先用mapToObj进行转换
List<Integer> integersList = Arrays.stream(integersArray).mapToObj(Integer::new).collect(Collectors.toList());
2、for循环
for循环是最简单、好用的方式,不再赘述。
注意,二维数组中的 list.toArray(array) 方法不能用于一维的 int[] 中。
因为 toArray() 方法的参数是范型对象,而 int 是标准数据类型。可以用 Interger[]来实现
相关文章:
Java中List与数组之间的相互转换
一、List列表与对象数组 List列表中存储对象,如List<Integer>、List<String>、List<Person>,对象数组中同样存储相应的对象,如Integer[]、String[]、Person[],对象数组与对象List的转换可通过如下方式实现&…...
嵌入式_GD32看门狗配置
嵌入式_GD32独立看门狗配置与注意事项 文章目录 嵌入式_GD32独立看门狗配置与注意事项前言一、什么是独立看门狗定时器(FWDGT)二、独立看门狗定时器原理三、独立看门狗定时器配置过程与注意事项总结 前言 使用GD3单片机时,为了提供了更高的安…...
Python 中的 JSON 操作:简单、高效的数据交换格式
在现代的数据交换和存储中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,备受青睐。它不仅易于阅读和理解,还可以灵活地表达和存储高维数据。本文将介绍如何在 Python 中操作 JSON 文件,…...
IT行业面试攻略:技巧与心态的平衡
引言:在面试IT公司时,调整好心态是取得优秀表现的关键。面试心态直接影响着我们在面试中的自信程度和表现。面对这一挑战,我们需要学会积极自信、认识到紧张是正常的、进行充分准备以及以积极的心态去迎接面试。只有在拥有正确的心态下&#…...
【玩转Linux】标准io缓冲区的操作
(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…...
28.JavaWeb-Elasticsearch
1.Elasticsearch概述 Elasticsearch 是一个分布式的全文检索引擎。采用Java语言开发,基于Apache协议的开源项目,具有实时搜索,稳定,可靠,快速的特点。 1.1 全文检索引擎 分为通用搜索引擎(百度、谷歌&…...
Python Flask构建微信小程序订餐系统 (十)
🔥 编辑会员信息 🔥 编辑会员信息可以通过点击会员列表操作,也可以点击会员信息详情点击进行操作 🔥 修改编程会员信息列表布局 🔥 修改 web/templates/member/index.html 文件,添加跳转到编辑会员信息的页面 web/templates/member/set.html 🔥 创建用于会员…...
j2ee相关知识点
浏览器栏中,输入的是servlet的mapping映射,请求到servlet中去,jsp路径,会跳转到对应的页面 Servlet接口位于最顶端,GenericServlet实现了Servlet,HttpServlet继承了GenericServlet 浏览器中访问Servlet映…...
Shell脚本学习-eval内置命令
这个命令,平时接触不是很多,所以不知道是什么回事。 eval内置命令: 功能:当Shell程序执行到eval语句的时候,Shell读入参数args,并将它们组合成一个新的命令,然后执行。也就是重新运算求出参数的…...
word中将合并后的多行拆分为原先的行数
word中将已经合并的多行拆分为原先的行数,我们不用刻意去数应该是多少行, 只需将拆分的行数不断增加,word会默认最大增加到合并前的行数。...
网络知识点之-BGP协议
本文章收录至《网络》专栏,点击右上角专栏图标可访问本专栏! 边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的…...
【mac系统】mac系统调整妙控鼠标速度
当下环境: mac系统版本,其他系统应该也可以,大家可以自行试下: 鼠标 mac妙控鼠标,型号A1657 问题描述: 通过mac系统自带的鼠标速度调节按钮,调到最大后还是感觉移动速度哦过慢 问题解决&…...
AI > 语音识别开源项目列举
名称所属开发机构使用场景优缺点技术特点占有率描述CMU Sphinx卡内基梅隆大学嵌入式设备、服务器应用优点:可用于嵌入式设备和服务器应用。 缺点:准确率相对较低,适用范围有限。- 支持多种语言模型和工具。- 适用于嵌入式设备和服务器应用。中…...
golang单元测试及mock总结
文章目录 一、前言1、单测的定位2、vscode中生成单测 二、构造测试case的注意事项1、项目初始化2、构造空interface{}3、构造结构体的time.Time类型4、构造json格式的test case 三、运行单测文件1、整体运行单测文件2、运行单个单测文件报错(1)command-l…...
mysql中的‘\G’ ‘\g’ ‘;’ navicat dbeaver
省流: 在navicat、dbeaver等客户端中使用时,“\G”、“\g”、“;”都可以不需要。 “\G”、“\g”、“;”都是用来做sql的结束符用。“\g”、“;”作用完全等价。“\G”是将字段横排显示转换成纵列显示。 横排显示: id |e…...
驱动day4work
头文件 #ifndef __CKR_H__ #define __CKR_H__typedef struct {unsigned int MODER; // 00unsigned int OTYPER; // 04unsigned int OSPEEDR; // 08unsigned int PUPDR; // 0Cunsigned int IDR; // 10unsigned int ODR; // 14 } gpio_t;// GPIO口 #define PHY_GPI…...
[SQL挖掘机] - 字符串函数 - length
介绍: length函数是mysql中用于获取字符串长度的函数。它接受一个字符串作为参数,并返回该字符串的字符数量(包括空格和特殊字符)。 用法: 以下是length函数的语法: length(string)其中,string是要计算长度的字符串…...
「深度学习之优化算法」(十七)灰狼算法
1. 灰狼算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读) 灰狼算法(Grey Wolf Algorithm)是受灰狼群体捕猎行为启发而提出的算法。算法提出于2013年,仍是一个较新的算法。目前为止(2020)与之相关的论文也比较多,但多为算法的应用,应该仍有研究和改进的余…...
mysql主从复制(主-从-从)
文章目录 一、前期环境准备二、主库配置1.设置server-id值并开启binlog参数2.建立同步账户并给上权限3.查看主库状态4.锁表设置只读5.备份数据库数据 三、从库配置1.设置server-id值并开启binlog参数2.还原从主库备份数据3.设定从主库同步4.启动从库同步开关 四.测试1.在主库上…...
如何制定数据采集解决方案?
数据采集仍是人工智能(AI)构建团队的主要瓶颈。原因各不相同:用例数据可能不足,深度学习等新机器学习(ML)技术需要更多数据,或者团队并未建立获取所需数据的适当流程。但无论如何,对…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
【阅读笔记】MemOS: 大语言模型内存增强生成操作系统
核心速览 研究背景 研究问题:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...
