Javaの罠 Part2(ArrayList.remove)

プログラミングコンテストにてハマったことのある罠をご紹介します.
ArrayList.removeについて.

ArrayListは隣接リストなどに使いますが,removeをすることがたまにあります.

  • remove(int index)

index番目のオブジェクトを削除して詰める.

  • remove(Object o)

(最初に現れる)オブジェクトoを削除して詰める.

もし,remove(int)をしようとして,remove(Integer)をしてしまうと死にます.

ArrayList<Integer> list=new ArrayList<Integer>();
list.add(1); list.add(2); list.add(3);
ArrayList<Integer> list2=new ArrayList<Integer>();
list2.add(2); list2.add(4); list2.add(6);
list.remove(list2.get(0)); // あー!あーーーーー!!!!あーーーーーーーーーーーっっっっ!!!!!!!!

listの中身は,[1, 3]になります.もし,2番目(=3)を消したかったとしたら間違いです.