Java将列表转换为数组,反之亦然

介绍:

在本文中, 我们将快速学习如何将Java List (例如ArrayList )转换为数组,反之亦然。 如果您希望总体上了解有关ArrayList的更多信息,请随时阅读我们有关Java ArrayLists的文章

同时,让我们开始吧!

将Java

将Java 列表转换为数组非常简单直接。 我们可以使用toArray()方法的两种可用样式之一:

//Returns an Object-type array
Object[] toArray()
 
//Returns an array of type T
T[] toArray(T[] array)

让我们尝试一下:

List<Integer> list = Arrays.asList(1, 2, 3, 4);
 
Object[] arrayOfObjects = list.toArray();
Integer[] arrayOfIntegers = list.toArray(new Integer[list.size()]);

toArray(T [] array)方法接受并返回一个数组。 传递数组的主要目的是通知要返回的数组类型:

  • 如果传入的数组有足够的空间,则将元素存储在同一数组中,并返回对该数组的引用
  • 如果其空间大于元素数,则首先使用列表元素填充数组,并将其余值填充为null
  • 否则,如果没有足够的空间来存储元素,则会创建,填充并返回具有相同类型和足够大小的新数组

将Java数组转换为

要将数组转换为Java中的List ,我们可以选择以下方法之一:

1.天真的方法(迭代):

一种简单的方法是遍历所有数组元素,并将它们添加到新创建的List中:

public <T> List<T> convertArrToList(T[] array) {
    List<T> list = new ArrayList<>();
    for(T element : array) {
        list.add(element);
    }
    return list;
}

我们可以使用上述通用方法轻松地转换类型T的数组:

Integer[] arr = {1, 2, 3};
List<Integer> list = c.convertArrToList(arr);

2.

我们还可以在java.util.Arrays类中使用asList()方法来快速构造一个List:

public <T> List<T> convertArrToList(T[] array) {
    return Arrays.asList(array);
}

此方法接受数组作为其参数。

3.

众所周知, java.util.Collections提供了addAll(Collection c,T ... elements)方法,该方法将所有元素添加到给定的collection c中

由于List继承自Collection接口,因此可以使用此方法来发挥我们的优势:

public <T> List<T> convertArrToList(T[] array) {
    List<T> list = new ArrayList<>();
    Collections.addAll(list, array);
    return list; 
}

4. Java 8流:

从Java 8开始,我们首先可以通过Java数组打开流,然后使用Java Stream Collectors将其元素收集在List中

public <T> List<T> convertArrToList(T[] array) {
    return Arrays.stream(array).collect(Collectors.toList()); 
}

对于一组原语,我们将有类似以下内容:

int[] array = new int[] { 1, 2, 3 };
List<Integer> list = Arrays.stream(array)
                       .boxed()
                       .collect(Collectors.toList());

结论:

在本教程中,我们研究了如何将Java List转换为数组。 我们还介绍了在Java中将数组转换为List的另一种情况。

翻译自: https://www.javacodegeeks.com/2019/03/java-convert-list-array-vice-versa.html

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值