共享部分列表以避免复制

Fri*_*jof 8 java list shared-memory

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

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

在此输入图像描述

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

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

有没有轻量级的List实现来满足我的需求?或者有一个相对简单的方法来自己实现一个?

Dou*_*las 2

对于IterableSet、 和MultisetGuava分别为您提供了Iterables.concat()Sets.union()、 和Multisets.sum()Lists不幸的是,缺乏等效的方法。