我有一个带有3个属性的类。属性之一用作唯一键,因此我在equalshashcode方法中使用了那个键。

现在,一旦构建好集合,在查找过程中,我只有主键(唯一键),我将不得不构造一个具有唯一键的虚拟对象,并将其他两个值设置为0(默认值),然后我说

Chapter myObject = new Chapter(uniqueKey,0,0);
hashSet.contains(myObject); // This will work.

这是哈希集查找的正确用法吗?还有其他更好的方法,因为我不喜欢在对象上设置虚假值。

最佳答案

减少冗长程度的一种方法是定义一个Chapter()构造函数,该构造函数接受uniqueKey参数并填充其余部分,然后使用:

hashSet.contains(new Chapter(uniqueKey));

由于您还是要扔掉物体。

但是,由于您有一个uniqueKey,我认为它对于Chapter的每个实例都是唯一的,因此您是否考虑过使用HashMap呢?然后,您可以只使用uniqueKey作为键,并且只需要检查键是否存在(例如:使用 HashMap.containsKey() ):
hashMap.containsKey(uniqueKey);

使用HashMap,您还可以通过.get()获得所需的对象:
Chapter c = hashMap.get(uniqueKey);

如果提供的Chapter映射到对象,则为您提供uniqueKey对象,否则为您提供null

10-04 21:27