我正在寻找一个实现复合列表的开源库。 我需要一个列表,它从其他一些列表中读取它的值,并且可以像这样构造:
List list1 = new ArrayList();
list1.add("0");
List list2 = new LinkedList();
list2.add("1");
list3.add("2");
List list3 = new CompositeList(list1, list2...)
然后:assertEquals("0", list3.get(0));
assertEquals("1", list3.get(1));
assertEquals("2", list3.get(2));
我的想法是我不需要复制源列表中的所有内容。
快速谷歌没有找到任何东西,我没有在 Guava 或公共(public) Collection 中看到它(我可能忽略了它)。 我现在真的没有时间正确实现它。
最佳答案
今天早上我在 Guava 里面寻找类似的东西,最后偶然发现了 Iterables.concat() .
您专门要求使用 ListView ,因此这可能无法完全解决您的问题,但这是一个需要牢记的选项。
一开始我还以为我需要一个 Collection/List,但后来我意识到这并不是解决我的问题所必需的:我主要是在寻找一些东西来连接多个 iterables(通过各种 Guava 过滤/转换获得),之前过滤/转换结果,最终 dump it into an ImmutableList .如果您只需要迭代结果,返回 Iterable View 也是一种选择。
PS(几年后):这些转换/连接现在也可以使用 Guava 的 FluentIterable
或 Java 8 流来完成。
关于Java 组合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4216340/