簡體   English   中英

如何將 ArrayList 轉換為 Array

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM