perlの配列は使いやすいです。以下のコードはなんの疑問もなく直感通りに動きます。
my @data = (1, 2, 3); print $data[4], "\n"; # 範囲を超えて参照してもよい print scalar(@data), "\n"; # 範囲を超えて参照しても大きさはそのまま print $data[-2], "\n"; # 負値だと後ろから検索 $data[10] = 10; # 範囲を超えて代入すると・・・ print scalar(@data), "\n"; # 大きさは拡張される
で、そのままjavaに移植してみます。
List<Integer> data = new ArrayList<Integer>( Arrays.<Integer>asList(1, 2, 3) ); System.out.println(data.get(4)); System.out.println(data.size()); System.out.println(data.get(-2)); data.set(10, 10); System.out.println(data.size());
コンパイルは通りますが、実行するとIndexOutOfBoundsException が出まくります。配列のサイズはプログラマが意識すべきですが、いちいちサイズをチェックしながら場合分けしてコーディングするのはいささか面倒です。
そんなわけで、楽するためにこのコードが動くようなListの実装を作ってみようと思います。
(時間がないので明日へ続く)