gpt4 book ai didi

java:写时复制数据结构?

转载 作者:行者123 更新时间:2023-11-30 09:55:32 24 4
gpt4 key购买 nike

Java 中有没有实现如下内容的东西

interface MSet<T> extends Iterable<T> {
/**
* return a new set which consists of this set plus a new element.
* This set is not changed.
*/
MSet<T> add(T t);

/**
* return a new set which consists of this set minus a designated element.
* This set is not changed.
*/
MSet<T> remove(T t);
}

编辑:我想要类似 CopyOnWriteArraySet 的东西,除了那个类是可变的,我想要一个不可变的集合,允许创建一个新的集合。这样做的原因是我需要分发对旧集的引用并保持它们不可变。

编辑 2:Scala 如何实现 scala.collection.immutable.Set ?这是我需要的行为类型,只是我不想为此耗尽所有 Scala。

最佳答案

使用 Google CollectionsImmutable* 满足您所有的不可变集合需求。我想你需要一个轻量级的包装类 - 这可以通过 Forwarding* (也在 GC 中)很容易地完成 - 在添加/删除时产生新的不可变(或可变,无论什么)操作。最后,如果您的修改本身不需要被允许产生新的修改,您可以使用 GC 中静态收集帮助程序库(Iterables、Lists、Sets 等)中的各种选项来实现这些操作以获取 View (重新设置: 并集、交集、过滤器)。

编辑:但是,google-code 目前非常慢 - 可能需要稍等片刻才能检查出来。

关于java:写时复制数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2774891/

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