因此,通常ArrayList.toArray()将返回Object[]....的类型但是假设它是 对象自定义的数组列表,我如何使toArray()返回自定义[]而不是对象[]的类型?
当前回答
arrayList.toArray(new Custom[0]);
http://download.oracle.com/javase/7/docs/api/java/util/ArrayList.html#toArray%28java.lang.Object[]%29
其他回答
我有答案了…这似乎工作得非常好
public int[] test ( int[]b )
{
ArrayList<Integer> l = new ArrayList<Integer>();
Object[] returnArrayObject = l.toArray();
int returnArray[] = new int[returnArrayObject.length];
for (int i = 0; i < returnArrayObject.length; i++){
returnArray[i] = (Integer) returnArrayObject[i];
}
return returnArray;
}
将List转换为特定类型的Array(例如Long)的简短版本:
Long[] myArray = myList.toArray(Long[]::new);
(可由java11提供)
是这样的:
List<String> list = new ArrayList<String>();
String[] a = list.toArray(new String[0]);
在Java6之前,建议这样写:
String[] a = list.toArray(new String[list.size()]);
因为内部实现无论如何都会重新分配一个适当大小的数组,所以你最好提前做这件事。由于Java6首选空数组,请参阅.toArray(new MyClass[0])或.toArray(new MyClass[myList.size()])?
如果列表的类型不正确,则需要在调用toArray之前执行强制转换。是这样的:
List l = new ArrayList<String>();
String[] a = ((List<String>)l).toArray(new String[l.size()]);
arrayList.toArray(new Custom[0]);
http://download.oracle.com/javase/7/docs/api/java/util/ArrayList.html#toArray%28java.lang.Object[]%29
它并不真的需要返回Object[],例如:-
List<Custom> list = new ArrayList<Custom>();
list.add(new Custom(1));
list.add(new Custom(2));
Custom[] customs = new Custom[list.size()];
list.toArray(customs);
for (Custom custom : customs) {
System.out.println(custom);
}
这是我的自定义类:-
public class Custom {
private int i;
public Custom(int i) {
this.i = i;
}
@Override
public String toString() {
return String.valueOf(i);
}
}
推荐文章
- 为什么MongoDB Java驱动在条件中使用随机数生成器?
- 即使从未抛出异常,使用try-catch块的代价是否昂贵?
- 什么时候我们应该使用观察者和可观察对象?
- Java中的split()方法对点(.)不起作用。
- Eclipse调试器总是阻塞在ThreadPoolExecutor上,没有任何明显的异常,为什么?
- Java生成两个给定值之间的随机数
- 如何有效地从数组列表或字符串数组中删除所有空元素?
- 比较JUnit断言中的数组,简洁的内置方式?
- 数组到哈希Ruby
- IEEE 754浮点数不能精确表示的第一个整数是哪一个?
- codestyle;把javadoc放在注释之前还是之后?
- 如何在Spring中定义List bean ?
- 将Set<T>转换为List<T>的最简洁的方法
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用Java重命名文件