Java Array List Set 相互转化

Array -> List

1
2
String[] arr = new String[]{"a", "b", "c", "d", "e"};
List<String> list = Arrays.asList(arr); // [a, b, c, d, e]

List -> Array

1
2
List<String> list = Lists.newArrayList("a", "b", "c", "d", "e");
String[] arr = list.toArray(new String[list.size()]); // [a, b, c, d, e]

Array -> Set

需通过 List 中间转一下:

1
2
String[] arr = new String[]{"a", "b", "c", "d", "e"};
Set<String> set = new HashSet<>(Arrays.asList(arr)); // [a, b, c, d, e]

Set -> Array

1
2
Set<String> set = Sets.newHashSet("a", "b", "c", "d", "e");
String[] arr = set.toArray(new String[set.size()]); // [a, b, c, d, e]

List <-> Set

List 与 Set 都实现了 Collection 接口,所以都实现了 Collection.addAll() 方法。那么它们之间的互相转化可以使用 addAll() 方法,或者直接在构造方法中传入。

1
2
3
4
5
6
7
8
9
10
11
12
13
// List -> Set
List<String> list = Lists.newArrayList("a", "b", "c", "d", "e");
Set<String> set1 = new HashSet<>(list); // [a, b, c, d, e]
// 或者
Set<String> set2 = new HashSet<>();
set2.addAll(list); // [a, b, c, d, e]

// Set -> List
Set<String> set = Sets.newHashSet("a", "b", "c", "d", "e");
ArrayList<String> list1 = new ArrayList<>(set); // [a, b, c, d, e]
// 或者
List<String> list2 = new ArrayList<>();
list2.addAll(set); // [a, b, c, d, e]