值您必須創建Item
類,這是OOP的整點!
很小的例子:
public class Item {
public String ref;
public int size;
public int date;
public Item(String ref, int size, int date) {
this.ref = ref;
this.size = size;
this.date = date;
}
}
然後,它只是一個List<Item>
,您可以用myList.get(i).ref
等訪問每個部分:
List<Item> l = new ArrayList<>();
l.add(new Item("GH987", 22, 1992));
l.add(new Item("98KJ", 27, 2000));
...
for (Item it : l)
System.out.println("Ref: "+item.ref+", size: "+item.size+", date: "+item.date);
現在,如果你真的想用一個Map
來存儲每個屬性,你必須考慮將你的唯一密鑰。讓我們假設它是ref
,這是一個String
:
Map<String,Integer> sizes = new LinkedHashMap<>(); // LinkedHashMap keeps the insert order
Map<String,Integer> dates = new LinkedHashMap<>();
sizes.put("GH987", 22);
dates.put("GH987", 1992);
sizes.put("98KJ", 27);
dates.put("98KJ", 2000);
那麼就很難訪問所有成員他們不是在單個實例綁定:
String ref = "GH987";
System.out.println("Ref: "+ref+", size: "+sizes.get(ref)+", date: "+dates.get(ref))
在這裏,你應該認識到,如果一個Map
尚未更新,它將返回值null
,您必須自己處理一致性。創建這麼多對象只是爲了存儲單個屬性也很痛苦,在您的情況下,這些屬性是Number
的子類(例如Integer
),而不是本地類型,效率更高。
所以你自己幫忙,並創建你的Item
類。然後你可以使用一個Map
基於其鍵,它看起來像ref
成員可以快速訪問特定項目:
myMap.put(ref, new Item(ref, size, date));
Item it = myMap.get(ref);
...
_I不希望創建一個項目類和3實例存儲在一個array._爲什麼不?什麼是你的代碼片段中的「-item」?這是一個關鍵嗎?如果是這樣,你如何期待'Map'使用重複鍵?它只是一種信息類型的標籤嗎? – Savior
閱讀此http://beginnersbook.com/java-collections-tutorials/地圖上的部分列出了不同的類型。地圖基本上是對的集合。如果你不關心你的元素的順序,你可以使用HashMap。有關於如何存儲和獲取元素的示例 –
FearlessHyena
您應該創建一個項目類。之後,您可以根據需要使用列表或地圖。 – yogidilip