Java中如何将一个List集合数据添加到另一个集合中 java把list的数据放到数组中

您所在的位置:网站首页 java中size Java中如何将一个List集合数据添加到另一个集合中 java把list的数据放到数组中

Java中如何将一个List集合数据添加到另一个集合中 java把list的数据放到数组中

#Java中如何将一个List集合数据添加到另一个集合中 java把list的数据放到数组中| 来源: 网络整理| 查看: 265

使用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); }

 

Java中如何将一个List集合数据添加到另一个集合中 java把list的数据放到数组中_List

Java中如何将一个List集合数据添加到另一个集合中 java把list的数据放到数组中_java_02

底层使用Arrays.copyOf来创建新的数组和System.arraycopy复制,主要的异常错误是arraycopy时的/*java.lang.ArrayStoreException*/。由测试发现。

接收的对象可以是Object类型。进行数组的创建和接收。体现了多态的特点。

接收的对象和list类型相同。

接收的对象是List类型的子类,这时需要向下转型,进行数组的创建和接收。

接收的对象是List类型的父类,和Object区分是由于其底层逻辑判断不同。

由于是数组的复制,所以是深拷贝。

//测试代码

无关类型会报/*java.lang.ArrayStoreException*/

T类型可以是Object类型

Java中如何将一个List集合数据添加到另一个集合中 java把list的数据放到数组中_数组_03

如果接收的对象是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的父类型

Java中如何将一个List集合数据添加到另一个集合中 java把list的数据放到数组中_泛型_04

 

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