¿Puedo eliminar un elemento al enumerar a través de un objeto de propiedades?
Solución del problema
PropertiesimplementsMap<Object,Object>, por lo que puede iterar sobre Set.iterator()sus Map.entrySet()y llamar Iterator.remove()a ciertas entradas.
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}"
La razón por la que desea llamar remove()a un iterator()es porque no desea provocar un ConcurrentModificationException.
Preguntas relacionadas
- Iterar sobre el mapa
- iterando y eliminando de un mapa
Muchos principiantes a menudo cuestionan el valor de interfaceJava: este es un gran ejemplo para mostrar cuán poderoso interfacepuede ser. Properties implements Map<Object,Object>, por lo que, a menos que se documente lo contrario, todo lo que puede hacer con un Map, puede hacerlo con un Properties. La información de la pregunta anterior es directamente relevante y directamente aplicable a su situación.
No hay comentarios:
Publicar un comentario