我一直在寻找一个体面的实现通用惰性不可修改的列表实现来包装我的搜索结果条目。该任务的不可修改部分很容易,因为它可以通过Collections.unmodifiableList()
来实现,所以我只需要整理出懒惰的部分。Google Collections中懒惰的不可修改列表
令人惊讶的是,google-collections没有任何东西可以提供;而LazyList from Apache Commons Collections不支持泛型。
我发现an attempt建立在谷歌的集合之上的东西,但它似乎是不完整的(如不支持size()
),过时的,需要一些外部类(不与1.0最终编译),但也可以使用作为建立我自己的班级的一个很好的起点。
是否有人知道任何LazyList的良好实现?如果不是的话,你认为哪个选项更好:
- 编写我自己的实现,基于谷歌集合ForwardingList,类似于Peter Maas做的;
- 围绕Commons Collections LazyList编写我自己的包装器(包装器只会添加泛型,所以我不必到处施放,只能在包装器本身中使用);
- 只需在
java.util.AbstractList
之上写点东西;
欢迎任何其他建议。
编辑:解释为什么我需要一个懒惰的列表。
我得到了一个Lucene搜索结果(TopDocs),它基本上是一串指向Lucene文档的指针。我的搜索结果类将把这些指针作为输入,并返回由抽取和处理的Lucene文档组成的对象列表。通过将所有内容都包装进懒惰列表中,我希望确保在不必要的情况下不会进行昂贵的处理。
你可以多说一点你真正想做的事情,所以我们可以理解为什么“懒惰列表”必然是正确的做法? – 2010-04-23 04:50:42
@Kevin刚加了解释,谢谢! – mindas 2010-04-23 08:41:50