¿Puedo eliminar un elemento al enumerar a través de un objeto de propiedades?
Solución del problema
Properties
implements
Map<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 interface
Java: este es un gran ejemplo para mostrar cuán poderoso interface
puede 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