我有一个带有3个属性的类。属性之一用作唯一键,因此我在equals
和hashcode
方法中使用了那个键。
现在,一旦构建好集合,在查找过程中,我只有主键(唯一键),我将不得不构造一个具有唯一键的虚拟对象,并将其他两个值设置为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
。