注意:本博客中的转换,List都得是泛型后的,否则会报错。
List转数组 public static void main(String[] args) {
//System.out.println(firstUpper("zhangsan"));
List list = List.of("aa","bb","cc","dd");
String[] array1 = list.toArray(new String[0]);
System.out.println(array1[3]);
String[] array2 = list.toArray(new String[list.size()]);//推荐
System.out.println(array2[3]);
String[] array4 = list.stream().toArray(size -> new String[size]);
System.out.println(array4[1]);
String[] array3 = list.stream().toArray(String[]::new); //重点:推荐
System.out.println(array3[2]);
Object[] objs = list.stream().toArray();
String[] array5 = Arrays.copyOf(objs, objs.length, String[].class);
System.out.println(array5[0]);
List list2 = List.of(11, 22, 33, 44);
int[] array6 = list2.stream().mapToInt(Integer::intValue).toArray();
System.out.println(array6[3]);
int[] array7 = IntStream.of(22, 33, 44).toArray();
System.out.println(array7[1]);
}
数组转List
public static void main(String[] args) {
//System.out.println(firstUpper("zhangsan"));
//数组转list
String[] array = {"aa", "bb", "cc", "dd"};
List list1 = Arrays.asList(array);
System.out.println(list1.get(3));
//list1.add("ee"); //--------------- ①
//System.out.println(list1);
ArrayList list2 = new ArrayList(Arrays.asList(array)); //推荐
System.out.println(list2.get(2));
ArrayList list3 = new ArrayList(array.length);
Collections.addAll(list3, array);
System.out.println(list3.get(2));
List list4 = Stream.of(array).collect(Collectors.toList()); //重点:推荐
System.out.println(list4.get(3));
List list5 = Arrays.stream(array).collect(Collectors.toList());
System.out.println(list5.get(1));
}
说明: Arrays.asList()返回的列表的大小是固定的。
Arrays.asList(strArray)的返回值不是java.util.ArrayList类,而是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList,它并非java.util.ArrayList类。 ArrayList的实现本质上是一个数组,而asList()返回的列表是由原始数组支持的固定大小的列表。这种情况下,如果添加或删除列表中的元素,程序会抛出异常UnsupportedOperationException。 java.util.Arrays.ArrayList类具有 set(),get(),contains()等方法,但是没有添加add()或删除remove()方法,所以调用add()方法会报错。