package org.limewire.collection.glazedlists; import ca.odell.glazedlists.EventList; import ca.odell.glazedlists.TransformedList; import ca.odell.glazedlists.FunctionList.Function; import ca.odell.glazedlists.event.ListEvent; /** * A simpler FunctionList that does not actually keep a map of old -> new, * but just does a transformation in-place of old -> new. * * This should use less memory than FunctionList, at the expense of CPU * and possibly garbage collection. */ public class SimpleFunctionList<S, E> extends TransformedList<S, E> { private final Function<S, E> function; public SimpleFunctionList(EventList<S> source, Function<S, E> function) { super(source); this.function = function; source.addListEventListener(this); } @Override public E get(int index) { final S elem = source.get(index); return function.evaluate(elem); } @Override public void listChanged(ListEvent<S> listChanges) { updates.forwardEvent(listChanges); } @Override protected boolean isWritable() { return false; } }