如何在Java中将ArrayList存储到数组中?

6
如何在Java中将ArrayList存储到数组中?

3
请详细描述您想要实现的目标。 - Joachim Sauer
http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html#toArray() - krock
7个回答

15

这取决于您想要什么:

List<String> list = new ArrayList<String>();
// add items to the list

如果你想将列表存储在数组中,可以采取以下方法之一:

Object[] arrOfObjects = new Object[]{list};
List<?>[] arrOfLists = new List<?>[]{list};

但是如果你想要数组中的列表项,可以使用以下方法之一:

Object[] arrayOfObjects = list.toArray();
String[] arrayOfStrings = list.toArray(new String[list.size()]);

Reference:


最好将arrOfLists定义为List<String>[],或者是List<?>[] - Paŭlo Ebermann
@Paŭlo 我知道,但是 List<String>[] 是语法错误,而 List<?> 并没有太大的收益 :-) - Sean Patrick Floyd
啊,对了,我忘记了那些愚蠢的非泛型数组了... 至少,List<?>[] 不会警告使用原始类型。 - Paŭlo Ebermann
@Paŭlo 好的,已经加上了这个更改,但如果你足够疯狂,要在数组中存储一个列表,那么你可能也不关心编译器警告 :-) - Sean Patrick Floyd

3
如果类型已知(也就是不是泛型参数),并且您想要一个该类型的数组:
ArrayList<Type> list = ...;
Type[] arr = list.toArray(new Type[list.size()]);

否则
Object[] arr = list.toArray();

2
你的意思是要将一个 ArrayList 转换成数组吗?
Object[] array = new Object[list.size()];
array = list.toArray(array);

选择适当的类。

0
List list = getList();
Object[] array = new Object[list.size()];
for (int i = 0; i < list.size(); i++)
{
  array[i] = list.get(i);
}

或者直接使用List#toArray()


0
List<Foo> fooList = new ArrayList<Foo>();
Foo[] fooArray = fooList.toArray(new Foo[0]);

0
List list = new ArrayList();

list.add("Blobbo");

list.add("Cracked");

list.add("Dumbo");

// Convert a collection to Object[], which can store objects    

Object[] ol = list.toArray();

0

尝试使用通用方法 List.toArray()

List<String> list = Arrays.asList("Foo", "Bar", "Gah");
String array[] = list.toArray(new String[list.size()]);
// array = ["Foo", "Bar", "Gah"]

在Java中,最后一行无法编译(尽管在Groovy中完全合法)。Javac会报错:Syntax error, insert "AssignmentOperator Expression" to complete Expression - Sean Patrick Floyd
@Sean:没错,我只是为了演示而加入了那个,我会更新答案以使其更清晰明了... - maerics

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接