我有一个类Item,每个项都有一个与之关联的唯一标识符。是否可以根据唯一标识符检索整个Item实例。也就是说,我想使用唯一标识符作为密钥。
class Item{
int id;
String name;
Date d;
}
现在基于id,我想检索它的名字和日期。有没有办法这样做?
首先我存储类实例..使用构造函数,现在基于一些先前存储的实例,给定id。我想检索整个实例
答案 0 :(得分:3)
你可以像这样制作一个HashMap。
HashMap<Integer, Item> itemMap = new HashMap<Integer, Item>();
并做一些类似的事情,
itemMap.put(itemInstance.id, itemInstance);
或者甚至可能是ArrayList<Item>
并创建一个getter方法,循环遍历该特定ID的ArrayList
。
无论如何,你将创建一些类型的集合。
答案 1 :(得分:1)
我认为您将类实例与搜索类实例的容器混淆。
严格地说,类的id没有任何内容可以帮助你找到类实例。但是,在类实例的集合中,您可以简单地迭代对象,检查每个对象的id。所有这些都完全取决于您的收藏类型。
答案 2 :(得分:0)
首先我存储类实例..使用构造函数,现在基于一些先前存储的实例,给定id。我想检索整个实例
Java中没有对此的内在支持。
你可以自己实现这样的事情:
public class Item {
private static HashMap<Integer, Item> all = new HashMap<Integer, Item>();
private final int id;
private String name;
private Datedate;
public Item(int id, String name, Date date) {
this.id = id; this.name = name; this.date = date;
synchronized (all) {
all.put(id, this);
}
}
// getters and setters
public static getInstance(int id) {
synchronized (all) {
return all.get(id);
}
}
}
HOWEVER ...... 这是一次巨大的存储泄漏。创建的每个Item
实例始终可以通过all
静态访问,因此无法进行垃圾回收。在很多情况下,这足以使这种方法不可行。