Properties
implements
Map<Object,Object>
, так что вы можете перебрать Set.iterator()
его Map.entrySet()
и на некоторых записях звоните Iterator.remove()
.
Properties prop = new Properties();
prop.put("k1", "foo");
prop.put("k2", "bar");
prop.put("k3", "foo");
prop.put("k4", "bar");
System.out.println(prop); // prints "{k4=bar, k3=foo, k2=bar, k1=foo}"
Iterator<Map.Entry<Object,Object>> iter = prop.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<Object,Object> entry = iter.next();
if (entry.getValue().equals("bar")) {
iter.remove();
}
}
System.out.println(prop); // prints "{k3=foo, k1=foo}"
Причина, по которой вы хотите позвонить remove()
на iterator()
, заключается в том, что вы не хотите вызывать ConcurrentModificationException
.
Похожие вопросы
Многие новички часто задаются вопросом о значении interface
в Java: это отличный пример, чтобы показать, насколько мощным может быть interface
. Properties implements Map<Object,Object>
, поэтому, если не указано иное, все, что вы можете сделать с Map
, вы можете сделать с Properties
. Информация в приведенном выше вопросе имеет прямое отношение и непосредственно относится к вашей ситуации.