-
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,数组的互相转换