百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

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

wptr33 2025-07-28 00:36 21 浏览

概述

在本文章中,我们对如何在 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 的方法的,感觉这个方法也比较简单,但是用得有点晦涩。

相关推荐

作为前端开发者,你都经历过怎样的面试?

已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...

面试被问 const 是否不可变?这样回答才显功底

作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...

2023金九银十必看前端面试题!2w字精品!

导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...

前端面试总结_前端面试题整理

记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...

由浅入深,66条JavaScript面试知识点(七)

作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...

2024前端面试真题之—VUE篇_前端面试题vue2020及答案

添加图片注释,不超过140字(可选)...

今年最常见的前端面试题,你会做几道?

在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...

一套比较完整的字节面试题,包含计算机网络、操作系统、前端等

一、算法和数据结构实现一个函数,判断两个给定的字符串是否为异构字符串。...

全网首发最全最深:web前端架构师面试题+缜密全面的学习笔记

Web前端到底是什么?众所周知,在众多的互联网技术职业中,Web全栈工程师已成为最急需的岗位之一,自从Node的出现令前端开发拥有控制器的能力,Node拓展了前端的地盘,前端开发者也不再称之为前端,现...

2023近期前端面试遇到的题(前端初级)

以下面试题不分先后顺序1、vue实现双向数据绑定原理是什么?八股文不想写了自己百度吧......

ES6新特性面试题及答案_es6新特性常见面试题

以下是一些ES6新特性的常见面试题及答案:请简要介绍ES6的箭头函数。...

我最近面试前端,发现一个很有意思的现象..

最近一个月,为了给团队补充新鲜血液,我密集面试了差不多20位前端候选人,从刚毕业的新人到有三五年经验的都有。面试得多了,我发现一个很有意思,甚至有点反常识的现象:...

被React困住的前端:创新为何难,怎么破?

“会React吗?”——面试间里这四个字,像门禁卡,刷不开直接下楼。可真正把项目跑起来,bundle一坨3.2倍的脂肪,首屏等400ms,白屏时间足够用户刷完一条短视频。hooks写岔了,三十的维护工...

面试官:聊聊你知道的Vue与React的区别

最近面到很多大公司的时候,小编都会碰到一个很尴尬的问题,很多大公司的技术栈都是React,但是小编学的是Vue,其实从本质上来说两者都是比较优秀的前端框架,所以有些面试官会问到Vue和React的区别...

面试官:说说 React 性能优化的手段有哪些?

作者:灰灰来源:JS每日一题一、是什么React凭借virtualDOM和diff算法拥有高效的性能,但是某些情况下,性能明显可以进一步提高...