簡體   English   中英

如何將java ArrayList 轉換為數組?

[英]How to convert java ArrayList to an array?

我有一個像這樣創建的 ArrayList:

public class Main {

    public static void main(String[] args) {
        // write your code here
        ArrayList list1 = new ArrayList();

        list1.add(0, 5);
        list1.add(1, 3.5);
        list1.add(2, 10);

    }
}

我正在嘗試使用toArray方法從中創建一個數組:

public class Main {

    public static void main(String[] args) {
        // write your code here
        ArrayList list1 = new ArrayList();

        list1.add(0, 5);
        list1.add(1, 3.5);
        list1.add(2, 10);

        Double[] list2 = list1.toArray(new Double[list1.size()]);
    }
}

但是,我收到一個錯誤:

(錯誤:(16, 39)java:不兼容的類型:java.lang.Object[])。

所以我試圖將右側投射到兩倍:

Double[] list2 = (Double[]) list1.toArray(new Double[list1.size()])

這次我在線程“main”中遇到異常。 我還嘗試從一開始就將我的 ArrayList 聲明為 double:

ArrayList<double> list1 = new ArrayList()<double>

沒有成功。 如何正確操作? 我知道我的問題可能是非常基本的問題。

問題是你做錯了很多事情:

  1. ArrayList list1 = new ArrayList(); 不正確,因為您使用的是原始類型。 您應該為此收到編譯器警告。

  2. 鑒於之前的list1.add(0, 5)是不正確的。 5將被裝箱為一個Integer因為該編譯器不知道該列表應該只包含Double值。

  3. 你得到這個:

     (Error:(16, 39) java: incompatible types: java.lang.Object[] ).

    因為你一定做過這樣的事情:

     Double[] list2 = list1.toArray();

    您似乎已經在您發布的代碼中更正了這一點。 但是 no-args toArray方法返回一個包含列表內容的Object[]

  4. ArrayList<double> list1 = new ArrayList()<double>不正確,因為您不能使用原始類型作為泛型類型參數,而且 RHS 上的語法是錯誤的。

    正確的版本是ArrayList<Double> list1 = new ArrayList<>(); 用空鑽石。

令人驚訝的是,對toArray進行編碼的最佳(最有效)方法是:

Double[] list2 = list1.toArray(new Double[0]);

顯然,如果它自己分配數組,實現能夠更快地初始化數組。 (或者我聽說過......)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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