您的位置:

Java数组转List教程

Java中数组和List是两种不同的数据类型,数组的长度是固定的,而List可以动态增加或减少元素。有时候需要将数组转换为List,方便进行一些List的操作,本文将从多个方面详细阐述如何将Java数组转换为List。

一、将数组转换为泛型为Object的List

public static List<Object> arrayToList(Object[] array) {
    if (array == null) {
        return null;
    }
    List<Object> list = new ArrayList<>(array.length);
    for (Object obj : array) {
        list.add(obj);
    }
    return list;
}

上述代码中的arrayToList方法可以将任何类型的数组转换为一个泛型为Object的List。该方法首先判断输入的数组是否为空,若为空则返回null。否则使用ArrayList的构造器创建一个大小为数组长度的List,然后通过for循环将数组中的元素添加到List中,最后返回生成的List。

二、将数组转换为泛型为指定类型的List

public static <T> List<T> arrayToList(T[] array) {
    if (array == null) {
        return null;
    }
    List<T> list = new ArrayList<>(array.length);
    for (T obj : array) {
        list.add(obj);
    }
    return list;
}

上述代码中的arrayToList方法可以将任何类型的数组转换为泛型为指定类型T的List。该方法与第一种方法的区别在于,使用了泛型T来代表要转换为的List的元素类型,将List的类型与数组的元素类型统一。用法与第一种方法类似。

三、使用Arrays.asList()方法将数组转换为List

String[] strArray = {"apple", "banana", "orange"};
List<String> strList = Arrays.asList(strArray);

上述代码演示了最简单的方法,使用Java标准库中的Arrays.asList()方法即可将数组转换为List。该方法将数组作为参数传递给asList()方法,该方法将返回一个不可变长度的List,这意味着该List的长度不可改变,而且无法执行add()、remove()等方法。若想要动态地增加或减少元素,应该使用ArrayList。

四、使用Java8的Arrays.stream()将数组转换为List

int[] intArray = {1, 2, 3, 4, 5};
List<Integer> intList = Arrays.stream(intArray).boxed().collect(Collectors.toList());

上述代码演示了使用Java8中的Arrays.stream()方法将数组转换为List。通过将intArray转换为IntStream,再使用boxed()将其转化为一个Stream<Integer>类型,最后使用Collectors.toList()来将其转化为一个List<Integer>类型。

五、注意事项

在将数组转换为List时,需要注意以下事项:

  1. 转换后的List不可改变长度
  2. 若数组中存在基本数据类型,需要使用Java8的IntStream、LongStream、DoubleStream等将其转换为相应的包装类型后再使用boxed()进行包装
  3. Arrays.asList()转换后的List中的元素类型为数组元素类型,不可为数组元素的包装类型
  4. 若数组中存在null元素,使用Arrays.asList()会将整个数组转换为List,并将null元素转换为null值,而不是List中的一个元素

六、总结

本文从多个方面详细阐述了如何将Java数组转换为List,同时介绍了常用的几种转换方法以及注意事项。在使用中,需要根据数组元素类型和需求选择合适的方式进行转换。