I think that the only problem of his code is that it should be:
Map<String, List<Person>> buf = new HashMap<String, ArrayList<Person>>();
You probably don't really write that if you use eclipse.
I guess that writing articles and articles about how java is bad and ruby is much better doesn't really deliver apps. By the time all these frameworks are written it will be already outdated and the person who wrote it loosed the time to the android market.
Funnily enough, your code won't compile. The generic signature of your hash map is incompatible with the signature of your variable declaration. You'll instead get a verbose error message like the following:
Test.java:6: incompatible types
found : java.util.HashMap<java.lang.String,java.util.ArrayList<java.lang.String>>
required: java.util.Map<java.lang.String,java.util.List<java.lang.String>>
Map<String, List<String>> buf = new HashMap<String, ArrayList<String>>();
There really are productivity wins to using some of these newer languages, but you'll never learn that by just whining about their existence.
You probably don't really write that if you use eclipse.
I guess that writing articles and articles about how java is bad and ruby is much better doesn't really deliver apps. By the time all these frameworks are written it will be already outdated and the person who wrote it loosed the time to the android market.