GVKun编程网logo

使 arrayList.toArray() 返回更具体的类型(array.aslist方法的返回类型)

10

在本文中,我们将带你了解使arrayList.toArray()返回更具体的类型在这篇文章中,我们将为您详细介绍使arrayList.toArray()返回更具体的类型的方方面面,并解答array.a

在本文中,我们将带你了解使 arrayList.toArray() 返回更具体的类型在这篇文章中,我们将为您详细介绍使 arrayList.toArray() 返回更具体的类型的方方面面,并解答array.aslist方法的返回类型常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的ArrayList & Arrays.ArrayList 的区别与踩坑、ArrayList al = new ArrayList();有什么区别?和ArrayList al = new ArrayList(0)?、ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象、ArrayList 类方法toArray的一点疑惑

本文目录一览:

使 arrayList.toArray() 返回更具体的类型(array.aslist方法的返回类型)

使 arrayList.toArray() 返回更具体的类型(array.aslist方法的返回类型)

所以,通常ArrayList.toArray()会返回一种Object[]....but 假设它是一个 Arraylistof object
Custom,我该如何toArray()返回一个 type ofCustom[]而不是Object[]

答案1

小编典典

像这样:

List<String> list = new ArrayList<String>();String[] a = list.toArray(new String[0]);

在 Java6 之前建议这样写:

String[] a = list.toArray(new String[list.size()]);

因为内部实现无论如何都会重新分配一个适当大小的数组,所以你最好提前做。由于 Java6 首选空数组,https://codingdict.com/questions/238893

如果您的列表没有正确输入,您需要在调用 toArray 之前进行强制转换。像这样:

    List l = new ArrayList<String>();    String[] a = ((List<String>)l).toArray(new String[l.size()]);

ArrayList & Arrays.ArrayList 的区别与踩坑

ArrayList & Arrays.ArrayList 的区别与踩坑

概述

在日常coding中,我们经常会用到List类型的对象;
在初始化List时,Arrays.ArrayList可以直接带参构造,可以省一行代码,不过不清楚源码或特性也会造成一些异常情况;

区别

初始化

public static void main(String[] args) {
    // java.util.ArrayList
    List<String> list1 = new ArrayList<>();
    list1.add("1");

    // java.util.Arrays.ArrayList
    List<String> list2 = Arrays.asList("1");
}

在上述情况中,乍看2个list是一样的,实际则略有不同

当调用list2.add("2")时,系统就会报错
Exception in thread "main" java.lang.UnsupportedOperationException

其原因是Arrays.ArrayList并没有实现AbstractList中的add方法;
同样,Arrays.ArrayList也没有实现AbstractList中的remove方法;
也可以认为,用Arrays.ArrayList初始化出来的对象,是一个定长的集合,并不支持添加元素;

所以在实际使用这2个类时,需要注意使用场景,若下游需要对该集合进行新增删减,就不能使用Arrays.ArrayList;
Arrays.ArrayList初始化List后,调用这个对象的add和remove方法并不会编译报错,只有在程序运行时才能发现问题,这里需要特别注意

ArrayList al = new ArrayList();有什么区别?和ArrayList al = new ArrayList(0)?

ArrayList al = new ArrayList();有什么区别?和ArrayList al = new ArrayList(0)?

ArrayList al = new ArrayList();有什么区别?和ArrayList al = new ArrayList(0)?

ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象

ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象

java面试要点---ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象。

ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象。 
1.刚刚看到的时候,也是很纳闷后来仔细看了下,java的反射机制;
2.这个可以通过java的反射机制来实现;
3.下面是一个例子:
 package com.credream.refelect;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class TestFile {
public static void main(String[] args) throws Exception {
List<Integer> list = new ArrayList<Integer>(); //定义Integer泛型
String str = "abc"; 
Method[] method=list.getClass().getMethods();//取得list的所有方法
System.out.println(method.length);
for(int i=0;i<method.length;i++){
System.out.println(method[i]);//遍历打印list的方法
}
method[0].invoke(list, str);//通过 反射来执行 list的第一个方法,第一个是list对象,代表该对象的方法,第二个是方法参数:  就是list.add(str);
System.out.println(list.size());
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
 ------------------------------------------------------------------------------------------------------------------
运行结果:
 35
public boolean java.util.ArrayList.add(java.lang.Object)
public void java.util.ArrayList.add(int,java.lang.Object)
public java.lang.Object java.util.ArrayList.get(int)
public java.lang.Object java.util.ArrayList.clone()
public int java.util.ArrayList.indexOf(java.lang.Object)
public void java.util.ArrayList.clear()
public boolean java.util.ArrayList.contains(java.lang.Object)
public boolean java.util.ArrayList.isEmpty()
public int java.util.ArrayList.lastIndexOf(java.lang.Object)
public boolean java.util.ArrayList.addAll(int,java.util.Collection)
public boolean java.util.ArrayList.addAll(java.util.Collection)
public int java.util.ArrayList.size()
public java.lang.Object[] java.util.ArrayList.toArray(java.lang.Object[])
public java.lang.Object[] java.util.ArrayList.toArray()
public boolean java.util.ArrayList.remove(java.lang.Object)
public java.lang.Object java.util.ArrayList.remove(int)
public java.lang.Object java.util.ArrayList.set(int,java.lang.Object)
public void java.util.ArrayList.ensureCapacity(int)
public void java.util.ArrayList.trimToSize()
public int java.util.AbstractList.hashCode()
public boolean java.util.AbstractList.equals(java.lang.Object)
public java.util.Iterator java.util.AbstractList.iterator()
public java.util.List java.util.AbstractList.subList(int,int)
public java.util.ListIterator java.util.AbstractList.listIterator(int)
public java.util.ListIterator java.util.AbstractList.listIterator()
public java.lang.String java.util.AbstractCollection.toString()
public boolean java.util.AbstractCollection.containsAll(java.util.Collection)
public boolean java.util.AbstractCollection.removeAll(java.util.Collection)
public boolean java.util.AbstractCollection.retainAll(java.util.Collection)
public final void java.lang.Object.wait() throws java.lang.InterruptedException
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public final native java.lang.Class java.lang.Object.getClass()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
1
abc

ArrayList 类方法toArray的一点疑惑

ArrayList 类方法toArray的一点疑惑

 

 

 

关于使 arrayList.toArray() 返回更具体的类型array.aslist方法的返回类型的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于ArrayList & Arrays.ArrayList 的区别与踩坑、ArrayList al = new ArrayList();有什么区别?和ArrayList al = new ArrayList(0)?、ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象、ArrayList 类方法toArray的一点疑惑等相关内容,可以在本站寻找。

本文标签: