On Monday evening, I did a bit of Ruby hacking. On Tuesday morning, I arrived at work and my first task involved iterating through a list, and doing something to each of its elements. My fingers were already typing list.each, and I had to wrench my brain from my Ruby mindset back to the Java Way.
Some time later in the day, I read Philip Greenspun's much-linked Java-is-an-SUV flame.
Problem: I have a list of objects. I want to create another list containing the ‘id’ property of those objects.
Solutions:1
- Ruby
 list.map { |i| i.id }- Perl
 map { $_->id } @list;- Python
 [x.id for x in list]- Common Lisp (Corrected by Andreas)
 (mapcar #'id list)- Smalltalk (from James)
 list collect: [:each | each id]- 
- OGNL (from Jason)
  list.{id}- Java
 List ids = new ArrayList(); for (Iterator i = list.iterator(); i.hasNext(); ) { ids.add(new Long(((Thingy)i.next()).getId())); }- Java w/ 1.5-style Generics/For Loop/Autoboxing
 List<Long> ids = new ArrayList<Long>(); for (Thingy x :list) ids.add(x.getId());
Collection ids = CollectionUtils.collect(
     x, new Transformer() {
            public Object transform( Object thingy ) {
                return ((Thingy)thingy).getId();
            }
        });1 I was too lazy to test that they work, but the syntax is close enough. Bug reports to /dev/null.