[英]How to convert ArrayList to Array
我有一個Person
類
public class Person
{
private int age;
private String first;
private boolean valid;
}
我創建了一個Person
對象的ArrayList
ArrayList<Person> valid = new ArrayList<Person>();
for(Person p : in)
{
valid.add(p);
}
現在我想把這個ArrayList
轉換成一個數組; 我試過這個:
Person[] people = (Person[]) valid.toArray();
但這是拋出異常
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lcom.net.Person;
你必須做這樣的事情
Person[] people = valid.toArray(new Person[valid.size()]);
您不能將 Object[] 轉換為 Person[]。 toArray 方法需要返回正確的類型。 該方法有一個重載版本,它采用您的類型數組。
Person[] people = valid.toArray(new Person[valid.size()]);
http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#toArray(T[])
你可以嘗試這樣的事情:
Person[] people = valid.toArray(new Person[valid.size()]);
正如您在 Javadocs 中看到的, List.toArray()
返回一個Object[]
,因此列表的通用類型信息丟失了。 這就是為什么你的演員表不起作用。
如果您需要保留通用信息,則必須使用替代的toArray()
方法,該方法采用所需類型的數組(例如,因為您可能想要將List<String>
轉換為List<CharSequence>
等在)。
您需要做的就是傳遞所需類型的空數組,例如:
list.toArray(new Person[]{});
然而,這有點浪費,因為它強制toArray()
方法在運行時構造一個適當大小的新數組(通過反射)。 相反,如果您傳入一個已經足夠大的數組,它將重用該數組,避免反射和額外分配。
list.toArray(new Person[list.size()]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.