Java中如何将一个List集合数据添加到另一个集合中 java把list的数据放到数组中 |
您所在的位置:网站首页 › java中size › Java中如何将一个List集合数据添加到另一个集合中 java把list的数据放到数组中 |
使用ArrayList内部的toArray方法,实现List---->String[] List接口的方法,ArrayList类,LinkedList类对该方法进行了实现。 由于参数和返回值带泛型,基本数据类型只能是包装类的对象,如Integer[]。 参数:T[] a,表示接收的数组,接收list中的每一个元素 如果a.lengthsize,不会创建新数组,从索引0开始赋值到size的大小。 返回值:T[] a;表示返回的对象数组调用:String[] arr=list.toArray(new String[4]); public T[] toArray(T[] a)示例 List list=new ArrayList(); list.add("asdfadsg"); list.add("asdfasdf"); String[] arr=list.toArray(new String[4]); for(String obj : arr){ System.out.println(obj); }
底层使用Arrays.copyOf来创建新的数组和System.arraycopy复制,主要的异常错误是arraycopy时的/*java.lang.ArrayStoreException*/。由测试发现。 接收的对象可以是Object类型。进行数组的创建和接收。体现了多态的特点。 接收的对象和list类型相同。 接收的对象是List类型的子类,这时需要向下转型,进行数组的创建和接收。 接收的对象是List类型的父类,和Object区分是由于其底层逻辑判断不同。 由于是数组的复制,所以是深拷贝。 //测试代码 无关类型会报/*java.lang.ArrayStoreException*/ T类型可以是Object类型 如果接收的对象是list的子类型 则必须添加子类的对象,否则/*java.lang.ArrayStoreException*/ List list1=new ArrayList(); list1.add(new Integer(1)); list1.add(new Integer(2)); Integer[] integers=list1.toArray(new Integer[0]); for(Object i: integers){ System.out.println(i); }如果接收的对象是list的父类型
String[]----->List 使用的是Arrays.asList方法,底层调用ArrayList的构造函数,但是又有不同 其实是调用Arrays中的静态内部类的构造函数。既然调用了构造函数底层就是深拷贝。 参数是:T[] a表示要转化的数组,默认不能是用int[]类型等未封装的数组,如果需要使用,1、接收的对象需要是集合类型使用int[]作为泛型。2、将其转化为包装类 List ints = Arrays.asList(new int[]{1, 2, 3});返回值:List代表接收的对象。 public static List asList(T... a) { return new ArrayList(a); }示例 Integer[] arr=new Integer[3]; arr[0]=1; arr[1]=2; arr[2]=3; List integerList = Arrays.asList(arr);List----->Integer[] Integer[] arr=new Integer[3]; arr[0]=1; arr[1]=2; arr[2]=3; List list1; list1=Arrays.asList(arr); Integer[] integers = list1.toArray(new Integer[0]); for(Integer i: integers){ System.out.println(i); }Integer[]------>List List transList=Arrays.asList(arr);List 转化为 int[][],二维数组可以作为参数,但int[]类型必须封装成Integer[],这里有一个疑点,由于ArrayList中源码只有带泛型的重载toArray方法。没有int[][] 为参数的方法,所以int[]可以视为泛型?而int不行。 return list.toArray(new int[0][]); |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |