您的位置:

Java中List和Array之间的转换方法

一、将Array转换为List

在Java中,可以通过Arrays.asList()方法将Array转换为List。Arrays.asList()会返回一个List视图,并且这个视图不能进行增加或者删除操作。示例代码如下:

Integer[] array = {1, 2, 3};
List<Integer> list = Arrays.asList(array);

注意:上述代码中,如果使用基本类型的数组进行转换,会直接转换成长度为1的List,因为在Java中基本数据类型是不能作为泛型使用的。需要将其封装为对应的包装类,例如int需要转换成Integer。

二、将List转换为Array

可以通过toArray()方法将List转换为数组。示例代码如下:

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Integer[] array = list.toArray(new Integer[0]);

注意:上述代码中,需要传入一个指定类型和长度的数组作为参数,如果参数中的数组长度小于List的长度,那么toArray()方法会新创建一个数组并返回。如果数组的长度大于List的长度,那么数组多余的部分会被填充为null。

三、将List转换为Set

通过构造函数或者addAll()方法可以将List转换为Set。示例代码如下:

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Set<Integer> set = new HashSet<>(list);//使用构造函数
Set<Integer> set2 = new HashSet<>();
set2.addAll(list);//使用addAll()方法

注意:上述代码中,如果List中存在重复元素,转换后的Set中只会保留其中的一个。此外,如果需要保留List中重复的元素,可以使用LinkedHashSet。

四、将Set转换为List

可以通过构造函数或addAll()方法将Set转换为List。示例代码如下:

Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
set.add(3);
List<Integer> list = new ArrayList<>(set);//使用构造函数
List<Integer> list2 = new ArrayList<>();
list2.addAll(set);//使用addAll()方法

注意:上述代码中,Set转换成List后,元素的顺序可能会发生变化,因为Set是无序的。

五、将List转换为Map

可以通过循环遍历List,并将List中的元素逐一添加到Map中,从而将List转换为Map。示例代码如下:

List<String> list = new ArrayList<>();
list.add("aa:1");
list.add("bb:2");
Map<String, Integer> map = new HashMap<>();
for (String s : list) {
    String[] split = s.split(":");
    map.put(split[0], Integer.parseInt(split[1]));
}

注意:上述代码中,需要对字符串进行分割,将其转换成对应的键值对。如果List中存在相同的键,后添加的元素会覆盖先添加的元素。