簡體   English   中英

不使用 List 創建空數組<object>

[英]Create empty array without using List<object>

如果我想創建一個“無限”數組,我知道我可以使用一個列表(這個論壇和其他論壇上有很多信息)

但是如果我不想列出清單呢? 還有其他方法嗎? 因為我想在另一個函數中使用浮點數組,在這種情況下使用列表有點麻煩。

這是我迄今為止在列表中寫的內容

List<Float> listfloat = new ArrayList();
listfloat.add((float)0.1); //example
listfloat.add((float)1.2);

float data[]= new float[listfloat.size()];

for(int i = 0; i < listfloat.size(); ++i)
{
    data[i] = listfloat.get(i);
}

return data ;

但我更喜歡這樣的東西

float data[]; //unknown size

for(i=0 ; i< sizeiwant; i++)
{
    data[i] = mydata;
}

return data ;

我知道它會起作用! 我只想優化我的編碼 =)

謝謝閱讀=)

有兩種方法可以做到這一點:

  1. 您可以使用list.ToArray()將列表轉換為數組

  2. 您可以通過每次向數組添加元素時更改數組的大小來動態調整數組的大小。 以下是您將如何做到這一點:

     //initialize array of size 10. int[] array=new int[10]; //make copy of array int[] arrayCopy=array.clone(); //expand array size by 1 array=new int[array.length+1]; //give value to new array index array[array.length-1]=0; //copy values from 'arrayCopy' to array for(int x=0;x<arrayCopy.length;x++){ array[x]=arrayCopy[x]; }

希望這有幫助。

根據您提供的信息,我建議使用 Array 並創建一個方法,該方法在您的數組已滿時調用,並以這種方式返回具有更多空間的原始數組的副本,您是在模擬動態大小分配。

java 中的數組是固定大小的,所以你的第二段代碼永遠不會工作。

如果你想要一個可以調整大小的數據類型,你應該使用ArrayList 另一方面,有時使用像float[]這樣的原始數組更快更方便。

因此,需要在List<Float>float[]按照您在第一個代碼塊中執行的方式進行轉換是相當普遍的,並且無法在一行中完成(除非您使用外部圖書館)。

我建議編寫一個實用方法來進行轉換

public static float[] listToArray(List<Float> list) {
    int size = list.size();
    float[] temp = new float[size];
    for (int i = 0; i < size; i++)
        temp[i] = list.get(i);
    return temp;
}

(此方法可以改進,因為它對於get是線性的LinkedList性能很差)。

令人討厭的是,對於 8 種基本類型,您需要 8 個這樣的方法,以及在另一個方向上進行轉換的 8 個方法。 就目前的情況而言,沒有辦法在原始類型上編寫通用代碼,因此像這樣的代碼重復很常見。

暫無
暫無

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

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