附加到不可变列表的某些claim更有效。这是真的?怎么样?
答案 0 :(得分:0)
可以在线程之间共享不可变对象而不进行同步。同步会对缩放产生负面影响,并且可能比复制更昂贵。
答案 1 :(得分:0)
通过分配足够大的数组以保存修改后的版本并复制所有未修改的元素来生成列表的修改版本有点昂贵,无论修改是附加,插入,删除,替换,或其他任何东西。成本与生成未修改但不同的列表副本的成本大致相当。
如果某个对象Foo
希望维护一个元素列表,使其只能在Foo
更改它时进行更改,则可以使用两种常用方法:< / p>
如果使用方法#1,那么每次Foo
改变列表时它必须创建一个新的“不可变列表”实例,但是Foo
可以回答对列表内容的请求而无需复制它。如果使用方法#2,则向列表中添加项目(以及其他修改)将更便宜,但是回答对列表内容的请求将需要复制列表。是否更好地使用方法#1或方法#2将取决于列表更新的频率,以及应用程序需要副本的频率。