2014-03-25 168 views
0

我需要將兩個值保存到ArrayList的一個單元格中。馬上,我要通過列表並總結數值。將數據存儲到Arraylist的最佳方法是什麼?地圖? 我想是這樣的:Java - collections List <Map <Integer,Integer >>

List<Map<Integer, Integer>> 

但我有時我需要KEY,有時價值,這是相當困難的,讓他們。 有更簡單的方法嗎?

+1

也許在Arraylist中保存一個整數? – ederollora

回答

5

如果您需要將兩個值作爲一個單位存儲,那麼編寫一個類包含兩個int字段,並進行適當的命名。例如,如果你的兩個int值代表x和y座標,寫一個類

class Point { 
    private int x; 
    private int y; 
    ... 
} 

...然後使用ArrayList<Point>

1

你只是試圖在數組列表的每個插槽中存儲一個元組(即兩個值)嗎?

做到這一點

簡單的辦法是要麼有一個元組類(getFirst(),getSecond()) - 或者,如果你希望它是快速和骯髒,存儲大小爲2的數組:

List<int[]> list = new ArrayList<int[]>(); 
list.add(new int[]{1, 2}); 

如果這不是你想要做的,請提供一些說明。

+0

這也是如何做到這一點,但恕我直言,創建新的類與getter和setter更好。感謝您的想法。 – user3414654

0

如果您需要爲特定的鍵多個值,

Map<Integer, List<Integer>> 

檢查(Guava's Multimap)。你可以找到相當不錯的類或實用類來進行轉換。

如果這是不適合你,你的定義並不壞,但如果有一個鍵值對,這可能是更好:

List<Map.Entry<Integer, Integer>> 

進入裏面的地圖簡單的內部類,存儲鍵/值對。 此外,如果你堅持你的方法(可能是複雜的),或者切換到入口,它不是很難改變(你總是需要密鑰或總是隻值情況。

List<Entry<Integer, Integer>> values; // filled, initialised 

// Getting only Keys 
values.stream().map(Entry::getKey); // Java8 stuff - method reference 

// Getting only Values 
values.stream().map(Entry::getValue); // Java8 stuff - method reference 

這裏瞭解method reference

相關問題