【发布时间】:2018-02-17 13:36:48
【问题描述】:
我想创建一个列表视图,其中包含许多其他列表的串联。
例子:
List<Integer> l1 = Lists.newArrayList(1);
List<Integer> l2 = Lists.newArrayList(2);
List<Integer> l3 = Lists.newArrayList(3);
// This call should not copy any of the argument lists content
List<Integer> concatenation = new ConcatenationListView(l1, l2, l3);
System.out.println(concatenation); // Prints [1, 2, 3]
l3.add(4);
System.out.println(concatenation); // Prints [1, 2, 3, 4]
我可以在 Java 中使用什么样的技术和/或模式来满足这些要求?
详情
- 我希望串联是惰性的。 (这就是上下文中“视图”的含义。)
- 我想更改组件列表以反映串联。 (也是“视图”的意思)。
- 视图不需要是可修改的。
- 这有点与
List.subList方法相反。 - 它类似于 Guava
Iterables.concat方法所做的,但我需要一个列表作为结果,而不是一个可迭代的。 - 我的问题与this one 类似,但我需要
List作为结果级联,而另一个问题的发布者的结果是Iterable。
【问题讨论】:
-
“这样的东西是否存在于某处?” 题外话,因为要求我们推荐或查找软件库的问题对于 Stack Overflow 来说是题外话。 --- “或者我如何以最好的方式实现它?”问题是题外话,因为它“太宽泛了”。
-
@Andreas:我认为您的吹毛求疵非常糟糕,但我已经编辑了文本以删除这些短语。我能看到的唯一问题是文本的具体表述。
-
@basst314:不,它不是重复的。在那个问题中,发帖人的结果是
Interable。我需要一个List。我将编辑我的问题来解释这一点。
标签: java collections view lazy-evaluation