list中的toArray()与toArray(T[] a)方法的异同

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/HS2529077916/article/details/100652756

list中的toArray()与toArray(T[] a)方法的异同

这两个方法都是List中的方法,都是将元素导出为数组,不同在于

1.输出结果

toArray()方法导出的是Object类型数组,

toArray(T[] a)方法导出的是指定类型数组

2.返回的数组是否新生成的一个数组

toArray()方法,返回的数组是新生成的一个数组

说明:对多次使用toArray()方法获取到的数组对象,对其中一个进行修改,不会影响其他toArray()方法获得的数组对象,同时也不会影响list本身存储的数据.

List<Integer> list = New ArrayList<>();
list.add(1);
list.add(2);
Object[] obj1 = list.toArray();
Object[] obj2 = list.toArray();
System.out.println(obj1==obj2);  //  false

toArray(T[] a)方法,返回的数组是新生成的一个数组

 List<String> list = new ArrayList<>();
 list.add("hellow");
 list.add("world!");
 String[] str = list.toArray(new String[]{});
 String[] str1 = list.toArray(new String[]{});
 System.out.println(str==str1); //false

3.应用

例如,需要将list集合中的元素转成数组

ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
String[] strNew = new String[list.size()];
//使用toArray()方法
Object[] obj = list.toArray();

for(int i = 0; i<obj.length;i++){
    String str = (String) obj[i];
    strNew[i]= str;
}
//使用toArray(T[] a)方法
String[] strT = list.toArray(new String[]{});

注意:

String[] strNew = (String[]) list.toArray();这是很容易犯得的错误,结果一运行就会报错:“Exception in thread “main” java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;”,会出现这个的原因:

  1. Object[]不能转化成String[];(这里是指数组中的说有值不能直接转化)
  2. java中的强制类型转换只是针对单个对象
  3. 如果需要转化,必须取出来其中的每一个值进行转化

猜你喜欢

转载自blog.csdn.net/HS2529077916/article/details/100652756