我注意到向列表添加元素会改变其哈希键值,因此无法再次访问它,因为.contains(modifiedObject)
不会在此处发生冲突。我没想到这种行为是诚实的。让我想知道HashSet
是如何进行哈希的。所以我怎样才能确保不在我修改时
HashSet
答案 0 :(得分:2)
一种方法是在UnmodifiableList<String>
中使用List<String>
代替HashSet
。
另一种选择是使用HashMap<String,List<String>>
代替HashSet<List<String>>
,前提是您可以将一些独特的String
密钥与每个List
相关联。
答案 1 :(得分:2)
如果您想阻止意外修改,请实施一个无法再修改的冻结类型 !
HashSet.get
来获取当前成员,只有contains
。而且,它的风格很差,很脆弱。将这些对象拆分为key,value会好得多。