Libraryless. Click here for Pure Java version (9230L/51K).
// still efficient when used to build a list recursively persistable sclass ConcatOnDemandList<A> extends RandomAccessAbstractList<A> { new LL<A> parts; L<A> completeList; *(L<A>... parts) { fOr (part : parts) addPart(part); } void addPart(L<A> part) { parts.add(part); } public int size() { ret completeList().size(); } public A get(int i) { ret completeList().get(i); } L<A> completeList() { if (parts != null) { new L<A> out; for (part : parts) collect(part, out); parts = null; completeList = out; } ret completeList; } void collect(L<A> part, L<A> out) { if (part == null) ret; if (part cast ConcatOnDemandList) part.collectInto(out); else out.addAll(part); } void collectInto(L<A> out) { if (parts != null) for (part : parts) collect(part, out); else out.addAll(completeList); } }
download show line numbers debug dex old transpilations
Travelled to 2 computer(s): elmgxqgtpvxh, mqqgnosmbjvj
No comments. add comment
| Snippet ID: | #1035860 |
| Snippet name: | ConcatOnDemandList |
| Eternal ID of this version: | #1035860/9 |
| Text MD5: | dc8d62b783030d610843868cf7119196 |
| Transpilation MD5: | 7de169259f23bd7d88c308bbb4c5fd91 |
| Author: | stefan |
| Category: | javax / gazelle 22 |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2022-08-03 07:01:04 |
| Source code size: | 962 bytes / 39 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 567 / 720 |
| Version history: | 8 change(s) |
| Referenced in: | [show references] |