gpt4 book ai didi

Java最佳实践,在对象修改之前还是之后添加到集合?

转载 作者:行者123 更新时间:2023-12-02 08:12:53 25 4
gpt4 key购买 nike

假设您要向集合中添加 x 个对象,并且在将它们添加到集合之后或之前,您要修改对象属性。在对象修改之前或之后什么时候将元素添加到集合中。

选项A)

public static void addToCollection(List<MyObject> objects) {
MyObject newObject = new MyObject();
objects.add(newObject);
newObject.setMyAttr("ok");
}

选项B)

public static void addToCollection(List<MyObject> objects) {
MyObject newObject = new MyObject();
newObject.setMyAttr("ok");
objects.add(newObject);
}

最佳答案

为了安全起见,您应该在添加之前进行修改,除非有特定原因您不能这样做,并且您知道集合可以处理修改。可以合理地假设该示例是安全的,因为一般 List 合约不依赖于对象属性 - 但这没有说明具体实现,具体实现可能具有取决于对象值的其他行为。

TreeSet 和 Map 通常不允许在插入对象后对其进行修改,因为集合的结构取决于对象的属性。对于树来说,一旦添加了项目,比较器使用的任何属性就无法更改。对于 map 来说,hashCode 必须保持不变。

所以,一般情况下,先修改,再添加。这对于并发集合变得更加重要,因为首先添加可能会导致其他集合用户在分配其最终状态之前看到对象。

关于Java最佳实践,在对象修改之前还是之后添加到集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3339254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com