Eine HashMap Methode

JavatarAang

Mitglied
Hallo Leute,
ich müsste eine methode Programmieren. Es geht darum dass ich ein Value (String p) angeben soll und falls das gegebene Value in Map enthalten ist soll er sie löschen:

mit for-each Schleife kam es zur einer exception. Deshalb benütze ich hier den Iterator.
Wenn ich die methode ausführe passiert einfach nichts.
(noch am rande, kann mir jemand den unterschied zwischen Iterator und einer for-each Schleife sagen ?)
Vielen Dank im voraus :)))
Java:
public void deleteEntriesOfAPerson(String p) {

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

       while (it.hasNext()) {
           Entry elem = it.next();

           if (elem.getValue() == p) {

               it.remove();

           }

       }

   }
 
Zuletzt bearbeitet von einem Moderator:
X

Xyz1

Gast
Kaskadiertes Entfernen/Löschen oder was soll es werden?

Der obige Code sieht richtig aus :rolleyes:
 

JavatarAang

Mitglied
@DerWissende

Er soll per parameter Eintrag durch die map iterieren, gucken welche Value mit dem Parameter gleich ist und diesen Eintrag dan löschen (Deletes all phone book entries of a specified person.)
Beispiel:

Key-Value:
123 , Bernd <- soll Löschen
456 , Bernd <- soll Löschen
789 , Lisa

hoffe ist verständlich genug.
 

Javinner

Top Contributor
@JavatarAang
Schau dir HashMap und die Methoden genau an ;)
Da haben die Leute die Vorarbeit längst geleistet:
Java:
public class Beispiel
{
    public static void main(String[] args)
    {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("FIRST", 1);
        map.put("SECOND", 2);
        System.out.println(Arrays.asList(map));
        String second = "SECOND";
        if (map.containsKey(second))
        {
            map.remove(second);
        }
        System.out.println(Arrays.asList(map));
    }
}
/** Output */
[{SECOND=2, FIRST=1}]
[{FIRST=1}]
 

mrBrown

Super-Moderator
Mitarbeiter
(noch am rande, kann mir jemand den unterschied zwischen Iterator und einer for-each Schleife sagen ?)
Bei einer Schleife wird einfach über alle Elemente iteriert, ohne dass du Kontrolle darüber hast. Wenn du direkt Interator nutzt, hast du die Kontrolle über die Iteration.


:D Ich hasse kleine fehler. Hab vergessen methode auszuführen und erst dann die syso auszuführen :D Tut mir leid.
In diesem Fall lag der Fehler allerdings auch am Code ;)

Schau dir HashMap und die Methoden genau an ;)
Da haben die Leute die Vorarbeit längst geleistet:
Das if um das remove ist btw überflüssig, intern wird auch noch geprüft, ob der Wert enthalten ist ;)
 

Neue Themen


Oben