2013-06-04 46 views
1

我需要在數組中存儲少量數據對。也許幾十個。我只需要追加,不需要刪除,不需要搜索。然後我將按索引訪問。每一對都是字符串值和整數值。 Java提供了很多方法來實現這一點,這是類似的常見做法嗎?兩個數組?數組中的類?在動態數組中存儲字符串+整數對?

我知道如何在JavaScript中做到這一點:

var data = [] 
data.push(['Some name', 100]) 

//somewhere else 
data.push(['Other name', 200]) 

,但我需要爲Java

解決

謝謝。

+1

Java或JavaScript的?:) –

+0

你真的* *需要一個數組,而不是一個列表?我只是創建一個類來封裝這對可能相關的值,然後創建一個這種類型的列表,例如'名單 FOOS =新的ArrayList ();' –

+0

的Java確實如此。我使用JavaScript作爲示例,因爲我知道如何使用JavaScript,並且不知道Java中的方式。 – exebook

回答

4

例如,您可以創建Pair類(或使用Apache的公地實現)來存儲列表兩個元素。

List<Pair<String, Integer>> l = new ArrayList<>(); 
l.add(new Pair<String, Integer>("Some name", 100)); 

Generic pair classJava Pair<T,N> class implementation看你如何實現對類。

3

這真的取決於,但總的來說,我認爲這是更好地創建一個對象,並使用它的一個列表:

public class MyObject { 
    private String myString; 
    private Integer myInt; 
    // getters setters 
} 

及用途:

List<MyObject> = new ArrayList<>(); 

(你也可以使用Pair代替)

如果串(或整數)是唯一的,你可以使用地圖,但它是很難得到的插入索引。

另一種選擇是隻是兩個列表,一個對於字符串,一個整數,並在這兩個列表中使用相同的索引。

+0

+1使用對象。\ –

0

我按照上面的建議去使用POJO,因爲這有助於爲POJO的所有屬性定義getter和setter,通過重寫equals和hashCode方法來比較對象。通過使用getter和setter,您可以知道存儲在哪個字段中,並且比較可以按照您的要求爲您提供對象排序。所以這種方法更加清晰和可擴展,以適應新的需求。另外,作爲你與連續鍵,以便POJO的的每個實例可以放在列表(如果需要排序的順序將數據。