JavaでStream.anyMatch()を回している最中にConcurrentModificationExceptionが発生しました。
前提・実現したいこと
ConfigというクラスにIDというString型の変数があり、
別クラスでList<Config>型のconfigsという変数を作成し、
java
1List<Config> configs = new ArrayList<>(); 2 3//ここにコンストラクタがあり、configsにConfig型のクラスが代入される 4 5public Config getConfigById(String id) { 6if(configs.stream().anyMatch(config -> config.getID().equalsIgnoreCase(id))) { 7return configs.stream().filter(config -> config.getID().equalsIgnoreCase(id)).findFirst().get(); 8} 9return null; 10}
としたところif文のanyMatch()のところで先程のConcurrentModificationException
が発生しました。
ネットで調べてもどのサイトも「collectionsを回している最中に変更が行われた場合にthrowされる」と書いてあるのですが
このコードの場合addもremoveもしていないので原因が不明です。
どなたかわかる方教えていただけないでしょうか?
補足情報
JDKのバージョン : 10.0.1
使用IDE : JetBrains IntelliJ IDEA Ultimate
あなたの回答
tips
プレビュー