Java 共享部分列表以避免复制

Java 共享部分列表以避免复制,java,list,shared-memory,Java,List,Shared Memory,我正在寻找一种实现List的数据结构,它允许我重用出现在多个列表中的列表部分 为了说明这一点,请考虑以下三个列表: 如您所见,红色序列(42、88、76、60)和蓝色序列(21、9、47)被多次使用,每个序列都表示作为其他列表的一部分共享的独立列表。事实上,名单可能更长 列表只需为只读,因为它将用作返回值。创建列表集合的过程将是唯一(允许)修改列表的过程(使用add(…)operations等)。共享部分列表将使使用addAll(..)(内部使用System.arraycopy(..))扩展性

我正在寻找一种实现
List
的数据结构,它允许我重用出现在多个列表中的列表部分

为了说明这一点,请考虑以下三个列表:

如您所见,红色序列(
42、88、76、60
)和蓝色序列(
21、9、47
)被多次使用,每个序列都表示作为其他列表的一部分共享的独立列表。事实上,名单可能更长

列表只需为只读,因为它将用作返回值。创建列表集合的过程将是唯一(允许)修改列表的过程(使用
add(…)
operations等)。共享部分列表将使使用
addAll(..)
(内部使用
System.arraycopy(..)
)扩展性复制列表元素变得多余


是否有轻量级的
列表
实现来满足我的需求?还是有一种相对简单的方法可以自己实现呢?

对于
Iterable
Set
Multiset
,您分别介绍了和,不幸的是,缺少等效的方法。

创建列表集合的过程是否知道可重用部件,还是希望它自己发现它们?它实际上需要一个列表吗?此列表集合的使用者关心列表api的哪些部分,您是否控制他们声明的参数类型?对于Iterable(如果使用者只遍历)或Set(如果order不相关),甚至MultiSet(order不相关,但允许使用倍数),都有简单的解决方案,但该功能似乎缺少列表。@jaco0646该过程知道可重用部件,就好像
addAll(reusablePart)
将被调用。@Douglas的消费者主要希望迭代列表,也许随机访问列表(但这不是主要考虑的问题)。