回答(12)
2 years ago
我遇到了解决它的代码片段 .
//Creating a sample ArrayList
List list = new ArrayList();
//Adding some long type values
list.add(100l);
list.add(200l);
list.add(300l);
//Converting the ArrayList to a Long
Long[] array = (Long[]) list.toArray(new Long[list.size()]);
//Printing the results
System.out.println(array[0] + " " + array[1] + " " + array[2]);
转换的工作原理如下:
它创建一个新的Long数组,其大小与原始列表相同
它使用新创建的ArrayList将原始ArrayList转换为数组
它将该数组转换为Long数组(Long []),我恰当地命名为'array'
2 years ago
您可以使用toArray()api,如下所示,
ArrayList stringList = new ArrayList();
stringList.add("ListItem1");
stringList.add("ListItem2");
String[] stringArray = new String[stringList.size()];
stringArray = stringList.toArray(stringList);
数组中的值是,
for(String value : stringList)
{
System.out.println(value);
}
2 years ago
对于ArrayList,以下工作原理:
ArrayList list = new ArrayList();
//... add values
Foo[] resultArray = new Foo[list.size()];
resultArray = list.toArray(resultArray);
2 years ago
我没有Java 8的最好的事情是:
public static T[] toArray(List list, Class objectClass) {
if (list == null) {
return null;
}
T[] listAsArray = (T[]) Array.newInstance(objectClass, list.size());
list.toArray(listAsArray);
return listAsArray;
}
如果有人有更好的方法来做到这一点,请分享:)
2 years ago
或者:
Foo[] array = list.toArray(new Foo[list.size()]);
要么:
Foo[] array = new Foo[list.size()];
list.toArray(array); // fill the array
请注意,这仅适用于引用类型的数组 . 对于基本类型的数组,使用传统方式:
List list = ...;
int[] array = new int[list.size()];
for(int i = 0; i < list.size(); i++) array[i] = list.get(i);
2 years ago
这是有效的 . 的种类 .
public static Object[] toArray(List> a) {
Object[] arr = new Object[a.size()];
for (int i = 0; i < a.size(); i++)
arr[i] = a.get(i);
return arr;
}
然后是主要方法 .
public static void main(String[] args) {
List list = new ArrayList() {{
add("hello");
add("world");
}};
Object[] arr = toArray(list);
System.out.println(arr[0]);
}
2 years ago
Java 8中的替代方案:
String[] strings = list.stream().toArray(String[]::new);
2 years ago
这(Ondrej的回答):
Foo[] array = list.toArray(new Foo[0]);
这是我看到的最常见的习语 . 那些建议你使用实际列表大小而不是“0”的人误解了这里发生的事情 . toArray调用不关心给定数组的大小或内容 - 它只需要它的类型 . 如果采用实际类型会更好,在这种情况下,“Foo.class”会更加清晰 . 是的,这个习惯用法生成一个虚拟对象,但包含列表大小只是意味着你生成一个更大的虚拟对象 . 同样,该对象不以任何方式使用;它只是需要的类型 .
2 years ago
试试这个:
List list = new ArrayList();
list.add("Apple");
list.add("Banana");
Object[] ol = list.toArray();
2 years ago
我认为这是最简单的方法:
Foo[] array = list.toArray(new Foo[0]);
2 years ago
import java.util.ArrayList;
public class CopyElementsOfArrayListToArrayExample {
public static void main(String[] args) {
//create an ArrayList object
ArrayList arrayList = new ArrayList();
//Add elements to ArrayList
arrayList.add("1");
arrayList.add("2");
arrayList.add("3");
arrayList.add("4");
arrayList.add("5");
/*
To copy all elements of java ArrayList object into array use
Object[] toArray() method.
*/
Object[] objArray = arrayList.toArray();
//display contents of Object array
System.out.println("ArrayList elements are copied into an Array.
Now Array Contains..");
for(int index=0; index < objArray.length ; index++)
System.out.println(objArray[index]);
}
}
/*
Output would be
ArrayList elements are copied into an Array. Now Array Contains..
1
2
3
4
5
2 years ago
tiendas = new ArrayList(tiendasList);
所有集合实现都有一个重载的构造函数,它接受另一个集合(模板 匹配) . 使用传递的集合实例化新实例 .