[英]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>
沒有成功。 如何正確操作? 我知道我的問題可能是非常基本的問題。
問題是你做錯了很多事情:
ArrayList list1 = new ArrayList();
不正確,因為您使用的是原始類型。 您應該為此收到編譯器警告。
鑒於之前的list1.add(0, 5)
是不正確的。 5
將被裝箱為一個Integer
因為該編譯器不知道該列表應該只包含Double
值。
你得到這個:
(Error:(16, 39) java: incompatible types: java.lang.Object[] ).
因為你一定做過這樣的事情:
Double[] list2 = list1.toArray();
您似乎已經在您發布的代碼中更正了這一點。 但是 no-args toArray
方法返回一個包含列表內容的Object[]
。
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.