我正在寻找一个通用的惰性不可修改列表实现的体面实现来包装我的搜索结果条目。任务中不可修改的部分很简单,因为它可以实现,Collections.unmodifiableList()
所以我只需要整理出懒惰的部分。
令人惊讶的是,google-collections没有提供任何东西。而来自 Apache Commons Collections 的 LazyList不支持泛型。
我发现尝试在 google-collections 之上构建一些东西,但它似乎不完整(例如不支持size()
)、过时(不使用 1.0 final 编译)并且需要一些外部类,但可以用作一个好的开始点建立我自己的班级。
有人知道 LazyList 有什么好的实现吗?如果不是,您认为哪个选项更好:
- 根据 google-collections ForwardingList 编写我自己的实现,类似于 Peter Maas 所做的;
- 围绕 Commons Collections LazyList 编写我自己的包装器(包装器只会添加泛型,所以我不必在任何地方强制转换,而只需在包装器本身中);
- 只需在上面写一些东西
java.util.AbstractList
;
欢迎任何其他建议。
编辑:解释为什么我需要一个惰性列表。
我有一个 Lucene 搜索结果 (TopDocs),它基本上是一堆指向 Lucene 文档的指针。我的搜索结果类会将这些指针作为输入并返回一个对象列表,这些对象由提取的和以其他方式处理的 Lucene 文档组成。通过将所有内容包装到惰性列表中,我想确保在不必要时不会进行昂贵的处理。