Iterazione e cancellazione da Hashtable in Java

Ho un Hashtable in Java e voglio scorrere su tutti i valori nella tabella ed eliminare una particolare coppia chiave-valore durante l’iterazione.

Come può essere fatto?

È necessario utilizzare un java.util.Iterator esplicito per iterare sul set di voci della Map piuttosto che essere in grado di utilizzare la syntax avanzata del ciclo per il loop disponibile in Java 6. Il seguente esempio esegue iterazioni su una Map di numero Integer , coppie di String , rimuovendo qualsiasi voce la cui chiave Integer è nullo o uguale a 0.

 Map map = ... Iterator> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = it.next(); // Remove entry if key is null or equals 0. if (entry.getKey() == null || entry.getKey() == 0) { it.remove(); } } 

Puoi usare Enumeration :

 Hashtable table = ... Enumeration enumKey = table.keys(); while(enumKey.hasMoreElements()) { Integer key = enumKey.nextElement(); String val = table.get(key); if(key==0 && val.equals("0")) table.remove(key); } 

Quindi conosci la chiave, la coppia di valori che vuoi eliminare in anticipo? È molto più chiaro farlo, quindi:

  table.delete(key); for (K key: table.keySet()) { // do whatever you need to do with the rest of the keys } 

Puoi utilizzare un elenco di cancellazione temporaneo:

 List keyList = new ArrayList; for(Map.Entry entry : hashTable){ if(entry.getValue().equals("delete")) // replace with your own check keyList.add(entry.getKey()); } for(String key : keyList){ hashTable.remove(key); } 

Puoi trovare ulteriori informazioni sui metodi di Hashtable nell’API Java