List转数组:
方法一:(笨办法硬换)
//array为待转换int[]int[] res = new int[list.size()];int i = 0;for(int num : list){res[i] = num;i++;}
方法二:(toArray)
//int类型,其他基本数据类型同理(必须是包装类对象)//底层源码逻辑://1.当传入的对象数组长度小于等于实际长度时,按实际长度copy一份//2.当传入的对象数组长度大于实际长度时,返回数组后面超过实际数据长度的位置会补null//因此,这里主要是为了传入类型,通常写实际数组长度或者写0都可以//重点!!!只有元素类型为引用数据类型的才能这样转,List<Integer>不能转成int[],但List<int[]>可以转成int[][],int[]数组类型也属于引用类型Integer[] res = list.toArray(new Integer[0]);//String类型String[] res = list.toArray(new String[0]);//int[]类型(转二维数组)List<int[]> list = new ArrayList<>();//第一个[]是list中int[]的数量,第二个[]是每个int[]的长度int[][] res = list.toArray(new int[list.size()][]);//不加参数就只能转换为Object类型数组Object[] res = list.toArray();
数组转List:
方法一:(笨办法硬换)
//array为待转换int[]List<Integer> list = new ArrayList<>();for(int num : array){list.add(num);}
方法二:(Arrays.asList)
/*!!!注意:asList的参数必须是对象数组,不能是基本类型数组。例如传入int类型数组,会把整个数组作一个元素,则前面必须用List<int[]>这种形式接收*///这样直接转换后的list不能调用add和remove等方法//这里创建的list是java.util.Arrays.ArrayList,并不是java.util.ArrayListList<Integer> list = Arrays.asList(array);//正确转换方式!List<Integer> list = new ArrayList<>(Arrays.asList(array));
方法三:(List.of)
//这样直接转换后的list不能调用add和remove等方法,jdk9以上才有List<Integer> list = List.of(array);
Set转数组:(和List一毛一样)
略
数组转Set:
方法一:(笨办法硬换)
//array为待转换int[],注意set会去重Set<Integer> set= new HashSet<>();for(int num : array){set.add(num);}
方法二:(Arrays.asList,同数组转List)
略
List转Set:
//list为待转换listSet<Integer> set= new HashSet<>(list);
Set转List:
//set为待转换setList<Inteter> list = new ArrayList<>(set);