データ構造を伝えるコード
例えばネストされたリストを作成する場合、
List<List<String>> nested = new ArrayList<List<String>>(); List<String> list1 = new ArrayList<String>(); list1.add( "a" ); list1.add( "b" ); list1.add( "c" ); nested.add(list1); List<String> list2 = new ArrayList<String>(); list2.add( "d" ); list2.add( "e" ); nested.add(list2); List<String> list3 = new ArrayList<String>(); list3.add( "f" ); list3.add( "g" ); nested.add(list3);
と書くよりも、
List<List<String>> nested = new ArrayList<List<String>>() {{ add( new ArrayList<String>() {{ add( "a" ); add( "b" ); add( "c" ); }}); add( new ArrayList<String>() {{ add( "d" ); add( "e" ); }}); add( new ArrayList<String>() {{ add( "f" ); add( "g" ); }}); }};
とか、
List<List<String>> nested = asList( asList("a", "b", "c"), asList("d", "e"), asList("f", "g") );
と書くと、作成したデータの構造をコードでスマートに伝えることができる。やってることは同じでも、後から読む時のことを考えて最小のコードで必要な情報が的確に読み取れるように最適化されたコードはかっこいいよね、とか思う今日この頃。