StoryEdit 開発日誌

ウェブアプリ StoryEditを作ってましたが延期。普通のブログ。

ListとArrayList

ArrayListにどんどん要素を入れていって、途中、再帰的な処理を行うことになった。
しかし問題が。。。sublistが使えない。

ArrayList<Integer> array = new ArrayList<Integer>();
array.add(3);
array.add(4);
ArrayList<Integer> sublist = (ArrayList<Integer>)array.subList(0, 1);

これだとClassCastExceptionがでてしまう。なんで、subListはArrayListを返さずにListなんだ。
役にたたねぇな、こいつわぁ。とおもって、APIリファレンスをよんでいると、subListはArrayListの継承しているAbstractListのメソッドだと気づく。

でもArrayListみたいによく使うものにSublistがないなんて、なんて言語だ。なんて思いながら、解決方法を探っていると、、、。

JavaではArrayListの変数ではなく、Listの変数を使うらしい。w Listはインタフェースなんで、newできないから、newの時だけArrayList使うんだと。しらねぇ、そんなこと。w

というわけで、次のように直す。

List<Integer> array = new ArrayList<Integer>();

これで解決。Map map = new HashMap() もおなじ理屈なんだってね。いやぁ。初心者まるだしですなぁ。笑 確かに、JythonでもリファレンスをArrayListでつくってるコードはぱっと見、見当たらない。笑