【发布时间】:2016-05-28 10:41:07
【问题描述】:
我对Java比较陌生,对以下事情感到困惑:我通常在设置内容之前将对象添加到ArrayList。即,
List<Bla> list = new ArrayList<>();
Bla bla = new Bla();
list.add(bla);
bla.setContent(); // content influences hashCode
这种方法效果很好。我担心这种方法在与HashSets 或HashMaps 一起使用时是否会给我带来麻烦。内部哈希表在添加对象时设置。如果在将对象添加到 HashSet 或 HashMap(并且其 hashCode 更改)之后调用 setContent() 会发生什么?
我应该在添加/放入HashSets 或HashMaps 之前完全设置(影响哈希码的)内容吗?一般是否建议在添加对象之前完成构建?
非常感谢您的见解。
【问题讨论】:
-
如果您可以使用
Map<String, Bla> map = new HashMap<>(),您可以在其中使用字符串标识符作为映射键,那么即使值随后发生变化,您也不应该有问题。
标签: java arraylist hashmap hashcode hashset