import java.util.*; public class Map { private static interface Mapper { public O apply(I i); } private static List map(Mapper m, List list) { List results = new ArrayList(); for ( I i : list ) { results.add(m.apply(i)); } return results; } public static void main(String[] args) { List ints = Arrays.asList(new Integer[] {2, 3, 5}); Mapper transformer = // more than meets the eye new Mapper() { public String apply(Integer s) { return ""+s+s+s; } }; System.out.println(map(transformer, ints)); } }