gpt4 book ai didi

java - 修改时返回新 View 的不可变集合

转载 作者:行者123 更新时间:2023-12-04 05:53:01 28 4
gpt4 key购买 nike

首先,我不是问一个包装器的问题,它使包装为只读,例如 Collections.unmodifableXXX。我的 api 将有一个不同的 api,其中所有修饰符方法都将返回新集合。

像简单列表这样的东西将不再有 void set 方法,但会返回一个新列表。

理想情况下,该包将包含 List、Set、Map 甚至无聊的 Stack 的相同不可变变体。

更新

// i am omitting generics etc to keep things simple.
XList list = List.fromArray( 1, 2, 3 );
XList list2 = list.add( 4 );

System.out.println( list ); // 1, 2, 3
System.out.println( list2 ); // 1, 2, 3, 4

删除、设置等都在更新元素等后返回不同的列表。

最佳答案

实际上,我认为 OP 正在描述一个功能集合 API。这可以使用写时复制来实现,但关键区别在于 API 设计本身。

我找不到像这样工作的替代 Java 集合框架。这并不是说你不能写一个......

(标准的 Java 写时复制集合是可变的,在大多数方面表现得像“普通”集合。在这些类中使用写时复制机制的目的是允许并发迭代和修改,并减少同步开销在具有大量线程争用的共享集合上。)

关于java - 修改时返回新 View 的不可变集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848386/

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