Java实战小技巧之数组与list互转

  

可以按照以下步骤将Java数组和List进行互相转换:

将数组转换为List

  1. 使用Arrays类的asList方法将数组转换为List
    java
    String[] array = {"a", "b", "c"};
    List<String> list = Arrays.asList(array);

    这里将String类型的数组转换为List类型的列表,可以类比其他类型的数组和列表。

  2. 注意事项

    • asList方法只对基本数据类型的数组和对象类型的数组有效。如果传入参数是基本数据类型的数组,数组元素会被作为一个对象插入到List中,而不是一个一个元素。所以如果要将整型数组转换为List,应该使用Integer数组。
    • 返回的List是一个不可变的列表,因此无法使用add、remove等方法进行修改。

将List转换为数组

  1. 使用List类的toArray()方法将列表转换为数组
    java
    List<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    String[] array = list.toArray(new String[list.size()]);

    这里将List类型的列表转换为String类型的数组,可以类比其他类型的列表和数组。toArray()方法需要传入一个数组,数组的大小应该大于等于列表的大小,否则该方法会创建一个新的数组,元素数量为列表的大小。

  2. 注意事项

    • toArray()方法可以传入一个类型相同的数组,来避免在方法中创建新数组。这样做的好处是可以提高性能。
    • 对于ArrayList等可变列表,toArray()方法返回的是数组的副本,对数组的修改不会影响原列表的元素。

示例1

将int类型的数组转换为List类型的列表

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

这里使用Java 8中的stream()方法将基本类型数组转换为流,再使用Boxed()方法将基本类型的流转换为包装类型Integer的流,最后使用collect()方法将流转换为List类型的列表。

示例2

将List类型的列表转换为int类型的数组

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
int[] array = list.stream().mapToInt(Integer::intValue).toArray();

这里先使用Java 8的stream()方法将列表转换为流,再使用mapToInt()方法将流中的Integer类型转换为int类型,最后使用toArray()方法将流转换为int类型的数组。

相关文章