Java-[List、Set、数组相互转换]
FangShiRui • 2020 年 06 月 18 日
Loading...
# 总览图
![一图胜千言](https://s1.ax1x.com/2020/06/19/Nu6k9S.png)
----------
## 数组转List
#### Arrays.asList()
直接使用该方法返回的List不能添加和删除元素。不推荐使用。
```java
String[] string_array = {"a", "b", "c"};
List string_list = Arrays.asList(string_array);
System.out.println(string_list.toString());
```
**但是,有个骚操作可以了解一下**,通过asList()返回的列表再new一个ArrayList()就可以曲线救国了
```java
String[] string_array = {"a", "b", "c"};
List string_list = new ArrayList(Arrays.asList(string_array));
System.out.println(string_list.toString());
```
#### Collections.addAll()
此方法可以完全使用List的所有方法,推荐使用!!
```java
String[] string_array = {"a", "b", "c"};
List string_list = new ArrayList<>();
string_list.add("0");
Collections.addAll(string_list, string_array);
string_list.add("d");
System.out.println(string_list.toString());
// 输出
[0, a, b, c, d]
```
#### List.of()包装器
Java9引入的静态方法
```java
String[] names = {"a", "b", "c"};
List list = new ArrayList<>(List.of(names));
list.add("d");
System.out.println(string_list.toString());
// 输出
[a, b, c, d]
```
----------
## List转数组
通过List的toArray()方法
```java
List string_list = new ArrayList<>();
string_list.add("a");
string_list.add("b");
string_list.add("c");
string_list.add("d");
// new String[0]中的0不代表申请数组长度!,这里的0实际上被toArray()方法替换为List.size()。
String[] string_array = string_list.toArray(new String[0]);
System.out.println(Arrays.toString(string_array));
// 输出
[a, b, c, d]
```
----------
## List转Set
通过构造函数传入List参数即可
```java
List string_list = new ArrayList<>();
string_list.add("a");
string_list.add("b");
string_list.add("c");
string_list.add("d");
Set string_set = new HashSet<>(string_list);
System.out.println(string_set.toString());
// 输出
[a, b, c, d]
```
----------
## Set转List
通过在List的构造函数传入Set参数即可。
```java
Set string_set = new HashSet<>();
string_set.add("a");
string_set.add("b");
string_set.add("c");
string_set.add("d");
List string_list = new ArrayList<>(string_set);
```
----------
## Set转数组
```java
通过Set的toArray()方法
Set string_set = new HashSet<>();
string_set.add("a");
string_set.add("b");
string_set.add("c");
string_set.add("d");
String[] string_array = string_set.toArray(new String[0]);
System.out.println(Arrays.toString(string_array));
```
----------
## 数组转Set
```java
String[] string_array = {"a", "b", "c", "c"};
Set string_set = new HashSet<>();
Collections.addAll(string_set, string_array);
System.out.println(string_set.toString());
// 输出
[a, b, c]
```