值您必须创建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