Java中List,Set,数组的互相转换
List转数组
通过toArray()推荐
//1. 通过 toArray()
List<String> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list.add("value" + i);
}
String[] arrays = list.toArray(new String[0]);
System.out.println(Arrays.toString(arrays));
}
jdk1.8 stream
public static void main(String[] args) {
//2. jdk1.8 stream
List<String> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list.add("value" + i);
}
String[] arrays = list.stream().toArray(String[]::new);
System.out.println(Arrays.toString(arrays));
}
数组转List
Arrays.asList()
public static void main(String[] args) {
/* * 此种方法生成的List不可进行add和remove操作 * 因为它是一个定长的List集合,跟数组长度一致 */
String[] array = new String[]{ "value1", "value2", "value3"};
List<String> stringList = Arrays.asList(array);
System.out.println(stringList.toString());
}
通过Collections.addAll(list, arrays)
public static void main(String[] args) {
//2.通过Collections.addAll(list, arrays);
List<String> stringList=new ArrayList<>();
String[] array=new String[]{ "value1","value2","value3"};
Collections.addAll(stringList, array);
System.out.println(stringList.toString());
}
jdk1.8 通过Stream
public static void main(String[] args) {
//3. jdk1.8 通过Stream
String[] arrays = new String[]{ "value1", "value2", "value3"};
List<String> listStrings = Stream
.of(arrays)
.collect(Collectors.toList());
System.out.println(listStrings.toString());
}
Set转数组
通过 toArray()
private static void setToArray1() {
Set<String> set = new HashSet<>();
set.add("value1");
set.add("value2");
set.add("value3");
//Set-->数组
String[] array=set.toArray(new String[0]);
System.out.println(Arrays.toString(array));
}
通过Stream jdk1.8
private static void setToArray2() {
Set<String> set = new HashSet<>();
set.add("value1");
set.add("value2");
set.add("value3");
//Set-->数组
String[] array= set.stream().toArray(String[]::new);
System.out.println(Arrays.toString(array));
}
数组转Set
通过先转List之后引入Set
//数组-->Set
private static void arrayToSet() {
String[] array = { "value1","value2","value3"};
Set<String> set = new HashSet<>(Arrays.asList(array));
System.out.println(set);
}
jdk1.8之后通过Stream
private static void arrayToSet2() {
String[] array = { "value1","value2","value3"};
Set<String> set = Stream.of(array).collect(Collectors.toSet());
System.out.println(set);
}
Set转List
普遍使用
//set为null会报错
private static void setToList() {
Set<String> set = new HashSet<>();
set.add("value1");
set.add("value2");
set.add("value3");
set=null;
List<String> list=new ArrayList<>(set);
System.out.println(list.toString());
}
jdk1.8通过Stream
//效率低不推荐
private static void setToList2() {
Set<String> set = new HashSet<>();
set.add("value1");
set.add("value2");
set.add("value3");
List list=Stream.of(set.toArray(new String[0])).collect(Collectors.toList());
System.out.println(list.toString());
}
List转Set
//list为null会报错
private static void listToSet() {
List<String> list = new ArrayList<>();
list.add("value1");
list.add("value2");
list.add("value3");
Set<String> set=new HashSet<>(list);
System.out.println(set.toString());
}
本文转载自简书文章:Java中List,Set,数组的互相转换
还没有评论,来说两句吧...