所以,通常ArrayList.toArray()
会返回一个Object[]
类型的....but假设它是一个Arraylist
of object Custom
,我该如何让toArray()
返回一个Custom[]
类型而不是Object[]
类型呢
发布于 2011-02-21 10:19:33
如下所示:
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]) or .toArray(new MyClass[myList.size()])?
如果您的列表类型不正确,则需要在调用toArray之前进行强制转换。如下所示:
List l = new ArrayList<String>();
String[] a = ((List<String>)l).toArray(new String[l.size()]);
发布于 2011-02-21 10:16:50
它实际上不需要返回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);
}
这是我的Custom
类:
public class Custom {
private int i;
public Custom(int i) {
this.i = i;
}
@Override
public String toString() {
return String.valueOf(i);
}
}
发布于 2020-09-30 19:57:13
将List转换为特定类型的数组的较短版本(例如Long):
Long[] myArray = myList.toArray(Long[]::new);
(可从java 11获得)
https://stackoverflow.com/questions/5061640
复制相似问题