2012-05-20 64 views
2

遵守以下代碼:如何在Java中填充通用列表的列表?

private List<List<Place>> m_grid = constructGrid(10000); 

private static List<List<Place>> constructGrid(int size) { 
    List<List<Place>> res = new ArrayList<List<Place>>(size); 
    for (int i = 0; i < size; ++i) { 
    res.add(null); 
    } 
    return res; 
} 

它是平淡。有沒有更好的方法來做同樣的事情?使用某種標準庫的單線程?

謝謝。

編輯

列表必須是可變的。因此,Collections.nCopies不適合該法案。

+4

我不完全明白你的意思。您是否想僅使用10,000個空元素預初始化外部列表? – home

+0

沉悶不是最糟糕的。魔術數字永遠不是一個好主意。所有這些列表引用都已經爲空。這裏你沒有做任何有用的事情。我寧願將它們初始化爲空列表。爲什麼預先初始化?根據需要添加。 – duffymo

+0

@duffymo:在這段代碼之後,列表的大小是10000而不是0,沒有這個代碼。不要說執行這個代碼是一個好主意,但這與執行任何事情不一樣。 –

回答

4

我真的不明白爲什麼你需要在你的名單10000空,但如果你想做到這一點,你可以這樣做:

List<List<Place>> tmp = Collections.nCopies(10000, null); // immutable 
List<List<Place>> res = new ArrayList<List<Place>>(tmp); // mutable 
+0

+1;哇,從來沒有認出這種方法! – home

+0

我只是爲了這個而查找的:'D' – beerbajay

+0

還有一個問題 - 請參閱編輯。 – mark