import java.util.AbstractList; import java.util.List; /** * List that allows to transform it values. * * @param <T> The target, transformed type. * @param <S> The source type. */ public abstract class TransformValueList<S, T> extends AbstractList<T> { List<S> list; public TransformValueList(List<S> sourceValuesList) { this.list = sourceValuesList; } public abstract T transform(S source); @Override public T get(int index) { S source = list.get(index); return transform(source); } @Override public int size() { return list.size(); } }
Der praktische Einsatz der Liste, hier mit einer Transformation von einer List<Boolean> in eine List<String>.
List<String> stringList = new TransformValueList<Boolean, String>(listWithBoolean) { @Override public String transform(Boolean source) { return source != null ? source.toString() : "false"; } };Die Werte der Liste werden während der Abfrage / Iteration transformiert. Wenn die Transformation komplexer ausfällt und die Liste mehrfach abgefragt wird, sollten die Werte aus Performancegründen gecacht werden.
Keine Kommentare:
Kommentar veröffentlichen
Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.