可以按照以下步骤将Java数组和List进行互相转换:
将数组转换为List
-
使用Arrays类的asList方法将数组转换为List
java
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
这里将String类型的数组转换为List类型的列表,可以类比其他类型的数组和列表。 -
注意事项
- asList方法只对基本数据类型的数组和对象类型的数组有效。如果传入参数是基本数据类型的数组,数组元素会被作为一个对象插入到List中,而不是一个一个元素。所以如果要将整型数组转换为List,应该使用Integer数组。
- 返回的List是一个不可变的列表,因此无法使用add、remove等方法进行修改。
将List转换为数组
-
使用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()方法需要传入一个数组,数组的大小应该大于等于列表的大小,否则该方法会创建一个新的数组,元素数量为列表的大小。 -
注意事项
- 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
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类型的数组。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实战小技巧之数组与list互转 - Python技术站