我有一个类项目,每个项目都有一个与之关联的唯一标识符。根据唯一标识符检索整个 Item 实例是否可行。也就是说,我想使用唯一标识符作为键。
class Item{
int id;
String name;
Date d;
}
现在基于 id,我想检索它的名称和日期。有什么办法吗?
首先,我存储类实例......使用构造函数,现在基于一些先前存储的实例,给定 id。我想检索整个实例
我有一个类项目,每个项目都有一个与之关联的唯一标识符。根据唯一标识符检索整个 Item 实例是否可行。也就是说,我想使用唯一标识符作为键。
class Item{
int id;
String name;
Date d;
}
现在基于 id,我想检索它的名称和日期。有什么办法吗?
首先,我存储类实例......使用构造函数,现在基于一些先前存储的实例,给定 id。我想检索整个实例
你可以像这样制作一个HashMap。
HashMap<Integer, Item> itemMap = new HashMap<Integer, Item>();
做一些类似的事情,
itemMap.put(itemInstance.id, itemInstance);
或者甚至可能是一个ArrayList<Item>
并创建一个循环遍历ArrayList
特定 id 的 getter 方法。
在任何情况下,您都将创建某种类型的集合。
我认为您将类实例与搜索类实例的容器混淆了。
严格来说,类的 id 没有任何内容可以帮助您找到该类实例。但是,在类实例的集合中,您可以简单地迭代对象,检查每个对象的 id。所有这些都完全取决于您的收藏类型。
首先,我存储类实例......使用构造函数,现在基于一些先前存储的实例,给定 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);
}
}
}
但是......这是一个巨大的存储泄漏。曾经创建的每个Item
实例始终可以通过all
静态访问,因此不能被垃圾收集。在很多情况下,这足以使这种方法不可行。