https://hacknote.jp/archives/16155/
https://hacknote.jp/archives/3463/
あたりでも話題になっています。
リストを削除しつつlistの要素をgetしょうとすると
java.lang.IndexOutOfBoundsException
が発生します。
NG
List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); for(i = 0; i < list.size(); i ++){ String hoge = list.get(i); if(!hoge.startsWith("a")){ list.remove(hoge); } }
OK
List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); Iterator<String> i = list.iterator(); while(i.hasNext()){ String hoge = i.next(); if(!hoge.startsWith("a")){ i.remove(); } }