2012-09-23 22 views
0

我很驚訝我還沒有找到任何答案。我想用1..100填充100的int數組。填充是一種很好的方法,但不會每次增加數值。它明顯的如何做一個循環,但我想避免由於我的最高價值非常高。有沒有可以爲我做這個的API方法?如何在沒有循環的情況下順序填充數組或數組列表?

+6

您使用的任何API方法都將在內部使用循環。 另外,你爲什麼要按順序填充1到100的ArrayList? – Osiris

+0

「我的最高價格非常高」是什麼意思? –

+0

即使填滿?因此,使用填充將所有1放在我的數組中或製作一個循環來將所有1放入我的數組中的性能相同? – zetologos

回答

8
  1. 標準庫沒有這樣做的方法。

  2. 即使有,它也需要使用引擎蓋下的循環。

  3. 我沒有看到的意義「我的最大值非常高」。這對使用循環的決定沒有影響。

  4. 不要使用遞歸。 Java不會實現尾部呼叫優化,因此1)它比使用循環要慢; 2)如果數組或列表很大,您可能會收到StackOverflowError。 (是的,我知道這個問題並不是很大,如問...)

+0

我以爲api會比我的循環更有效地填充我的數組。但我猜測一個循環是一個循環,不管它在哪裏。 – zetologos

+0

是...一個循環是一個循環。 –

+0

+1無論語言如何,循環效率最高。對於使用其他方法的語言,它們通常會編譯爲使用循環。例如尾遞歸可以轉換爲循環。 –

0

Ooooh,使用遞歸!

void to100(int[] array, int i, int v) { 
    if(i < array.length) { 
     array[i] = v; 
     to100(i+1, v+1); 
    } 
} 

int[] array = new int[100]; 

too100(array, 0, 1); 

享受。

+1

我有一種感覺,這將比明智的循環性能(來自所有的函數調用)更糟糕,但你得到的諷刺點xD – Borgleader

+0

這將是: 'int [] hit = new int [100]; \t to100(hit,1,hit.length); \t \t 靜態無效到100(INT []數組,INT I,int v)按 \t { \t如果(ⅰ<100) \t { \t陣列[I] = I; \t to100(array,i + 1,v + 1); \t} \t}' – zetologos

相關問題