Java 如何在 Array 和 List 之间进行转换

news2024/11/22 16:47:38

概述

在本文章中,我们对如何在 Java 中对 Array 和 List 进行转换进行一些说明和示例。

这些示例通过使用 Core Java 和一些第三方的转换工具,例如 Guava 和 Apache Commons Collections。

更多有关的文章,请访问:Java - OSSEZ 相关的内容和参与讨论。

从 List 转换为 Array

使用原生 Java 代码

我们可以使用原生 Java 代码来进行转换,在 List 中有一个 toArray 的方法,直接使用就可以了。

    @Test
    public final void givenUsingCoreJava_whenListConvertedToArray_thenCorrect() {
        final List<Integer> sourceList = Arrays.asList(0, 1, 2, 3, 4, 5);
        final Integer[] targetArray = sourceList.toArray(new Integer[0]);
    }

需要注意的是,我们在这里使用了 toArray(new T[0]) 来对变量进行初始化,相对使用 toArray(new T[size]) 这个方法。

使用 toArray(new T[0]) 来对数组进行初始化更加安全,快速,易读。

使用 Guava

让我们来使用 Guava API 来进行相同的转换:

    @Test
    public final void givenUsingGuava_whenListConvertedToArray_thenCorrect() {
        final List<Integer> sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
        final int[] targetArray = Ints.toArray(sourceList);
    }

Ints 中有一个 toArray 的方法,这个方法将会把整数类型的 List 转换为 Array。

把 Array 转换为 List

使用原生 Java

让我们使用原生的 Java 来把数组转换为 List。

直接只用 JDK 中的 Arrays 来进行转换就可以了。

@Test
public void givenUsingCoreJava_whenArrayConvertedToList_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    List<Integer> targetList = Arrays.asList(sourceArray);
}

需要注意的是,这个方法转换的 List 是固定长度的 List,你就没有办法对这个 List 进行相关操作了。

如果你是希望使用基本的 ArrayList 的话,我们可以简单的使用 ArrayList 来对其进行实例化。

如下面的代码来进行实例化:

List<Integer> targetList = new ArrayList<Integer>(Arrays.asList(sourceArray));

使用 Guava

让我们来使用 Guava API 来进行相同的转换:

@Test
public void givenUsingGuava_whenArrayConvertedToList_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    List<Integer> targetList = Lists.newArrayList(sourceArray);
}

使用 Commons 集合

最后,我们来看看如何使用 Apache Commons Collections 的 CollectionUtils.addAll API 来把 Array 的内容填充到一个空的 List:

@Test 
public void givenUsingCommonsCollections_whenArrayConvertedToList_thenCorrect() { 
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; 
    List<Integer> targetList = new ArrayList<>(6); 
    CollectionUtils.addAll(targetList, sourceArray); 
}

这个方法,我们使用的是 CollectionUtils 的工具类来进行添加的。

结论

在 Java 的集合类型直接进行转换是我们需要经常进行操作的方法和需求。

上面介绍了几种基本的转换方法,根据我们的实际使用经验,使用 Guava 的 Lists 来把 Array 转换为 List 是我们常用的方法。并且创建的 List 也是可变的。

使用 Commons Collections 的这个方法是通过 Add 的方法的,感觉这个方法也比较简单,但是用得有点晦涩。

Java 如何在 Array 和 List 之间进行转换 - Java - OSSEZ概述在本文章中,我们对如何在 Java 中对 Array 和 List 进行转换进行一些说明和示例。 这些示例通过使用 Core Java 和一些第三方的转换工具,例如 Guava 和 Apache Commons Collections。 更多有关的文章,请访问:Java - OSSEZ 相关的内容和参与讨论。 从 List 转换为 Array使用原生 Java 代码我们可以使用原生 Java 代码来进行转换,在…https://www.ossez.com/t/java-array-list/14416

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++ 11标准模板(STL) std::vector (十一)

定义于头文件 <vector> template< class T, class Allocator std::allocator<T> > class vector;(1)namespace pmr { template <class T> using vector std::vector<T, std::pmr::polymorphic_allocator<T>>; }(2)(C17…

单元测试 - 注解篇

1. RunWith 指定单测的运行环境 RunWith(JUnit4.class) - JUnit4环境RunWith(MockitoJUnitRunner.class) - Mock环境RunWith(SpringJUnit4ClassRunner.class) / RunWith(SpringRunner.class) - Spring环境 ps: SpringJUnit4ClassRunner 与 SpringRunner区别 SpringRunner继承…

Gradio的web界面演示与交互机器学习模型,分享应用《3》

Gradio的web界面演示与交互机器学习模型&#xff0c;安装和使用《1》https://blog.csdn.net/weixin_41896770/article/details/130540360Gradio的web界面演示与交互机器学习模型&#xff0c;主要特征《2》https://blog.csdn.net/weixin_41896770/article/details/130556692 前…

pywinauto使用教程

这里写自定义目录标题 引入pycharm项目新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注…

JDK的版本迭代(JDK9 - JDK20)

文章目录 1. 发布特点2. 名词解释Oracle JDK和Open JDKJEPLTS 3. 各版本支持时间路线图4. 各版本介绍jdk 9jdk 10jdk 11jdk 12jdk 13jdk 14jdk 15jdk 16jdk 17jdk 18jdk 19jdk 20 5. JDK各版本下载链接6. 应该如何学习新特性 1. 发布特点 发行版本发行时间备注Java 1.01996.01…

[Java]JavaWeb学习笔记(动力节点老杜2022)【Javaweb+MVC架构模式完结】

文章目录 &#x1f97d; 视频对应资料&#x1f97d; Tomcat服务器&#x1f30a; 下载与安装&#x1f30a; 关于Tomcat服务器的目录&#x1f30a; 启动Tomcat&#x1f30a; 实现一个最基本的web应用&#xff08;这个web应用中没有java小程序&#xff09; &#x1f97d; 静态资源…

(附源码)springboot学生宿舍管理系统 毕业设计 211955

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

人工智能AI到底能AI到什么程度?

作为引领新一轮科技革命和产业变革的重要驱动力&#xff0c;人工智能催生了大批新产品、新技术、新业态和新模式。日前&#xff0c;全新的聊天机器人模型ChatGPT因其强大的语言理解和文本生成能力&#xff0c;引发自“阿尔法狗”后大众对人工智能的第二波关注高潮。 据悉&…

Java笔记_14(集合进阶2)

Java笔记_14 一、双列集合1.1、Map的常见API1.2、Map遍历方式一&#xff08;键找值&#xff09;1.3、Map集合遍历方法二&#xff08;键值对&#xff09;1.4、Map集合遍历方法三&#xff08;lambda表达式&#xff09;1.5、HashMap1.6、HashMap练习1.7、HashMap底层源码解析1.8、…

【ChatGPT】ChatGPT+飞书,打造智能问答助手

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 前言 环境列表 视频教程 1.飞书设置 2.克隆feishu-chatgpt项目 3.配置config.yaml文件 4.运行feishu-chatgpt项目 5.安装cpolar内网穿透 6.固定公网地址 7.机器人权限配…

Unity本地化:添加多语言支持

文档&#xff1a;Quick Start Guide | Localization | 1.2.1 (unity3d.com) /**************************************************** 文件&#xff1a;LocaleSelector.cs 作者&#xff1a;Edision 日期&#xff1a;#CreateTime# 功能&#xff1a;语言本地化 *…

vue脚手架(vue-cli)详细安装过程

CLI&#xff0c;俗称脚手架。全称是Command Line Interface。 vue-cli 是vue官方发布的开发vue项目的脚手架。 vue脚手架用于自动生成vue和webpack的项目模板&#xff0c;是一个快速构建vue项目的工具&#xff0c;可以自动安装vue所需要的插件&#xff0c;避免手动安装各种插件…

camunda执行监听器和任务监听器有什么区别

Camunda的执行监听器和任务监听器是用于添加自定义逻辑的监听器&#xff0c;它们的区别在于作用对象和触发事件的不同。 执行监听器是与BPMN流程中的各种流程元素&#xff08;例如开始事件、用户任务、服务任务、网关等&#xff09;相关联的。执行监听器可以在流程元素执行前、…

德邦快递:逆境之下,让数字化辅助业务的利润增长

#01行业背景 2022年&#xff0c;我国快递业务量完成 1105.8 亿件&#xff0c;业务量连续 9 年位居世界第一&#xff0c;仅用七年时间&#xff0c;中国的快递行业就完成了从百亿到千亿的十倍增长。我国快递物流行业正从蓝海进入红海&#xff0c;在下半场激烈竞争中破局的关键在…

线上问题-CPU使用频率飙升

描述 中午收到群内人员反馈环境访问速度慢。登录验证码打不开等问题。通过查看日志发现是kafka出现问题&#xff0c;无法处理消息。联系运维解决。在排查的过程中使用mobaXterm连接服务器。左下角看到CPU使用频率非常高。于是记录一下通过CPU查看程序占用情况分析问题。 过程 …

各大厂与卡顿和ANR的战斗记录篇

作者&#xff1a;Drummor 1.1 认识ANR 1.1.1 系统如何处理ANR 设计原理和影响因素篇&#xff0c;主要对以下关键问题展开 ANR触发的条件以及根本原因发生ANR之后&#xff0c;系统处理ANR的流程。应用层如何判定ANR&#xff1a;对ANR的感知&#xff0c;通过监听SIGQUIT信号。…

直播合辑 | 微软ATP与您相约100场公益演讲

&#xff08;本文阅读时间&#xff1a;5 分钟&#xff09; Public100已历经了近一年的春夏秋冬&#xff0c;截止目前我们一共举办33场公益直播&#xff0c;由微软及合作伙伴中从事 AI 相关工作的工程师、产品经理、市场总监、运营经理等各类专家和学者&#xff0c;分享自己在学…

IPC机制之管道

每个进程各自有不同的用户地址空间&#xff0c;任何一个进程的全局变量在另一个进程中都看不到&#xff0c;所以进程之间要交换数据必须通过内核&#xff0c;在内核中开辟一块缓冲区&#xff0c;进程1把数据从用户空间拷到内核缓冲区&#xff0c;进程2再从内核缓冲区把数据读走…

一行代码绘制高分SCI火山图

一、概述 在近半年中&#xff0c;我读了很多的高分SCI文章&#xff0c;很多文章中都有多种不同的火山图&#xff0c;包括「普通的火山图、渐变火山图、以及包含GO通路信息的火山图」&#xff01; 经过一段时间的文献阅读和资料查询&#xff0c;终于找到了一个好用而且简单的包…

烽火HG680KA-Hi3798MV300-当贝纯净桌面-卡刷固件包

烽火HG680KA-Hi3798MV300-当贝纯净桌面-卡刷固件包-内有教程 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的软件&#xff…