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

Posted huyuchengus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 如何在 Array 和 List 之间进行转换相关的知识,希望对你有一定的参考价值。

概述

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

 

https://www.ossez.com/t/java-array-list/14416

Java面试题|Array和ArrayList有何区别?

每天一道面试模拟真题及解析





课前导读

●回复"每日一练"获取以前的题目,持续更新!

我希望大家积极参与!有什么不懂可以加小千微信进行讨论

★把面试准备工作,拆分、融入到平时每天


如何实现数组和List之间的转换?

参考答案:


数组转 List ,使用 JDK 中 java.util.Arrays 工具类的 asList 方法
public static void testArray2List() { String[] strs = new String[] {"aaa", "bbb", "ccc"}; List<String> list = Arrays.asList(strs); for (String s : list) { System.out.println(s); }}
List 转数组,使用 List 的 toArray 方法。无参 toArray 方法返回 Object 数组,传入初始化长度的数组对象,返回该对象数组
public static void testList2Array() { List<String> list = Arrays.asList("aaa", "bbb", "ccc"); String[] array = list.toArray(new String[list.size()]); for (String s : array) { System.out.println(s); }}
点击 阅读原文 抢预约免费试听课程名额

以上是关于Java 如何在 Array 和 List 之间进行转换的主要内容,如果未能解决你的问题,请参考以下文章

java中如何实现数组ListSetMap之间互相转换。

Java面试题|Array和ArrayList有何区别?

java list和数组之间的相互转化

服务器系列(23):tensor、numpy.array、list三者之间互相转换

Java中List、Set、Map接口之间的区别和联系

Java中的集合都有哪些 在啥情况下使用