1

我有一个类项目,每个项目都有一个与之关联的唯一标识符。根据唯一标识符检索整个 Item 实例是否可行。也就是说,我想使用唯一标识符作为键。

 class Item{
     int id;
     String name;
     Date d;
 }

现在基于 id,我想检索它的名称和日期。有什么办法吗?

首先,我存储类实例......使用构造函数,现在基于一些先前存储的实例,给定 id。我想检索整个实例

4

3 回答 3

3

你可以像这样制作一个HashMap。

HashMap<Integer, Item> itemMap = new HashMap<Integer, Item>();

做一些类似的事情,

itemMap.put(itemInstance.id, itemInstance);

或者甚至可能是一个ArrayList<Item>并创建一个循环遍历ArrayList特定 id 的 getter 方法。

在任何情况下,您都将创建某种类型的集合。

于 2012-10-27T05:58:53.477 回答
1

我认为您将类实例与搜索类实例的容器混淆了。

严格来说,类的 id 没有任何内容可以帮助您找到该类实例。但是,在类实例的集合中,您可以简单地迭代对象,检查每个对象的 id。所有这些都完全取决于您的收藏类型。

于 2012-10-27T05:59:26.050 回答
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);
       }
   }
}

但是......这是一个巨大的存储泄漏。曾经创建的每个Item实例始终可以通过all静态访问,因此不能被垃圾收集。在很多情况下,这足以使这种方法不可行。

于 2012-10-27T06:49:46.233 回答