実現したいこと
map.remove(key) にて削除したいのですがここがうまく処理できません。
エラーメッセージ
### 該当のソースコード ```ここに言語名を入力 public class Main { public static void main(String[] args){ int count = 1; Map<Integer,String> map=new HashMap<>(); List<String> studentNameList = List.of("sasaki","miku","tanaka","taku", "tetu","tomoki","tateki","shika","kokomo","ken"); List<String> nameList = new ArrayList<>(); for(String name : studentNameList){ if(name.length() >= 4){ nameList.add(name); } map.put(count,name); count++; } System.out.println("課題①" + nameList); for(Integer key:map.keySet()){ if(key % 2 == 0 ){ map.remove(key); ←ここでエラーが発生しています。 }else { System.out.println(map.get(key)); } } } }
試したこと
Integerをint型へ変換してみたが駄目でした。
補足情報(FW/ツールのバージョンなど)
Java21
intellij IDE
Map.keySet()
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Map.html#keySet--
> このマップに含まれるキーのSetビューを返します。セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。セットの反復処理中にマップが変更された場合、反復処理の結果は定義されていません
なので、map.keySet() をコピー(再インスタンス化)するとよいかと。
Set<Integer> mapSet = new HashSet<Integer>(map.keySet());
for(Integer key: mapSet){
:
まずエラーメッセージはコピペして提示されたほうが良いと思います。

回答1件
あなたの回答
tips
プレビュー