I was looking for a decent implementation of a generic lazy non-modifiable list implementation to wrap my search result entries. The unmodifiable part of the task is easy as it can be achieved by Collections.unmodifiableList()
so I only need to sort out the the lazy part.
Surprisingly, google-collections doesn't have anything to offer; while LazyList from Apache Commons Collections does not support generics.
I have found an attempt to build something on top of google-collections but it seems to be incomplete (e.g. does not support size()
), outdated (does not compile with 1.0 final) and requiring some external classes, but could be used as a good starting point to build my own class.
Is anybody aware of any good implementation of a LazyList? If not, which option do you think is better:
- write my own implementation, based on google-collections ForwardingList, similar to what Peter Maas did;
- write my own wrapper around Commons Collections LazyList (the wrapper would only add generics so I don't have to cast everywhere but only in the wrapper itself);
- just write something on top of
java.util.AbstractList
;
Any other suggestions are welcome.
EDIT: explanation why I need a lazy list.
I have got a Lucene search result (TopDocs) which is basically a bunch of pointers to Lucene documents. My search result class would take these pointers as an input and return a list of objects which are made of extracted and otherwise processed Lucene documents. By wrapping everything into a lazy list I want to ensure I am not doing expensive processing when unnecessary.