2016-03-08 109 views
0

我想基於現有變量的值創建列表名稱。例如如何根據定義變量的值定義列表名稱

double x; 
x = 1.23 

List<Something> x = new ArrayList<>(); 
x.add(new Something(Blah, Blah)); 

當然,這告訴我x已經被定義。我如何使列表的名稱成爲現有變量的值?

+0

爲什麼你想/需要這樣做? –

+0

你不能這樣做。 –

+0

我必須循環訪問數據庫中的超過150億行數據,並根據行的值將數據添加到多個列表。我需要根據多行數據可能使用同一列表的數據行中的值創建列表,以便它們需要添加到現有列表中,否則將創建一個新列表。然後,一旦我有了列表,我將它們排序並遍歷列表以執行一些統計函數。 – mithrix

回答

1

基於您的評論,你需要「通過數據庫中的數據的幾行迭代,將數據添加到基於該行的值多個列表」,你可以組織你的for循環是這樣的:

double x = 1.23 

Map<Double, List<Something>> map = new HashMap<>(); 
for (;;) { 
List<Something> xValues = null; 
if (map.containsKey(x)) { 
    xValues = map.get(x); 
} else { 
    xValues = new ArrayList<>(); 
    map.put(x, xValues); 
} 
xValues.add(new Something(Blah, Blah)); 
} 

當然x = 1.23的價值可能來自另一個集合或直接從resultset

+0

這會允許我添加到現有的列表嗎?例如,如果兩行數據具有相同的x值。它是否將這兩個值添加到x列表中? – mithrix

+0

是的。 x的值是地圖的關鍵,因此它將與包含前一行數據的現有列表相匹配。 – Saheed

+0

我更新了代碼給你的建議,但得到錯誤'類型參數錯誤數量2' @saheed – mithrix

1

你不能。你可以寫Map<Double, List<Something>>,也可以寫map.put(x, myList),但是你不能有動態命名的變量。

+0

這將允許我遍歷每個x,mylist?例如,如果列表1中的值是1,2 1,3 1,4 2,5和列表2 1,2 1,3 1,3 1,5 2,5如果我想要對它們進行排序,我將如何遍歷每個列表中的值列出並在每個列表上執行統計。 – mithrix

+0

@mithrix當然,你只需遍歷'map.entrySet()'。 –

+0

對不起,我該如何使用您在代碼中提到的myList。例如,如果我有x的列表名稱和1,2的值,我如何將它添加到map.put與map.put(x,myList)? @Louis Wasserman – mithrix