Mapのキーをイテレートしながら要素を削除する。
実装方法をすぐ忘れるので、メモ書き。
Map<String, String> m = new HashMap<String, String>(); m.put("aaa", "bbb"); m.put("aaa1", "bbb"); m.put("aaa2", "bbb"); m.put("aaa3", "bbb"); for (Iterator<String> i = m.keySet().iterator(); i.hasNext();) { if (i.next().endsWith("2")) { i.remove(); } } System.out.println(m);
こういうショボイコードを見ると本当に泣ける。
- ダメダメな例
Map<String, String> m = new HashMap<String, String>(); m.put("aaa", "bbb"); m.put("aaa1", "bbb"); m.put("aaa2", "bbb"); m.put("aaa3", "bbb"); List<String> list = new ArrayList<String>(); for (String s : m.keySet()) { if (s.endsWith("2")) { list.add(s); } } for (String s : list) { m.remove(s); } System.out.println(m);