38 votes

L'itération de table de hachage en java

J'ai une table de hachage en java et souhaitez parcourir toutes les valeur dans le tableau, supprimer une clé,valeur paire lors de l'itération. Est-il une manière que je pourrais le faire

43voto

Adamski Points 29884

Vous avez besoin d'utiliser explicite java.util.Iterator d'itérer sur l' Maps'entrée de jeu plutôt que d'être en mesure d'utiliser le renforcement de la boucle For de la syntaxe disponible dans la version 6 de Java. L'exemple suivant effectue une itération sur un Map de Integer, String paires, la suppression d'une entrée dont l' Integer clé est nul ou égal à 0.

Map<Integer, String> map = ...

Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();

while (it.hasNext()) {
  Map.Entry<Integer, String> entry = it.next();

  // Remove entry if key is null or equals 0.
  if (entry.getKey() == null || entry.getKey() == 0) {
    it.remove();
  }
}

41voto

mostar Points 1282

Vous pouvez utiliser Enumeration:

Hashtable<Integer, String> table = ...

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

7voto

Scharrels Points 2214

Vous pouvez utiliser un temporaire de la liste de suppression:

List<String> keyList = new ArrayList<String>;

for(Map.Entry<String,String> entry : hashTable){
  if(entry.getValue().equals("delete")) // replace with your own check
    keyList.add(entry.getKey());
}

for(String key : keyList){
  hashTable.remove(key);
}

Vous pouvez trouver plus d'informations sur la table de hachage des méthodes de l' API Java

6voto

polygenelubricants Points 136838

Donc, vous savez l'essentiel, la valeur de la paire que vous souhaitez supprimer à l'avance? C'est juste beaucoup plus clair pour ce faire, ensuite:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X