Map doppelte Values löschen

werdas34

Bekanntes Mitglied
Hallo,
ich soll eine Methode schreiben die doppelte Values komplett aus der Map entfernt.

Java:
    static Map<String, Integer> removeDuplicateNumbers(Map<String, Integer> map){
        Set<Integer> duplicate = findDuplicateNumbers(map);  
        Map<String, Integer> newMap = new HashMap(map);
        Iterator<Integer> iterDupl = duplicate.iterator();
        Set<String> keys = map.keySet();

       
        while(iterDupl.hasNext()) {
            int dupl = iterDupl.next();
            System.out.println(dupl);
            Iterator<String> iterKeys = keys.iterator();
            while(iterKeys.hasNext()) {
                String num = iterKeys.next();
                System.out.println(newMap.get(num) + num);
                if(newMap.get(num) == dupl) {
                    newMap.remove(num);
                }
            }
        }
        return newMap;
    }
Die Methode findDuplicates funktioniert. Die gibt die Values Werte zurück die doppelt sind.
Map Inhalt:
Mats Hummels=5
Ausgabe:
5
5Mats Hummels
32Joshua Kimmich
5Javi Martinez
4Niklas Süle
35Renato Sanches
25David Alaba
25Thomas Müller
1Manuel Neuer
25
nullMats Hummels <- Er setzt den Value auf null und nicht den Key
Exception in thread "main" java.lang.NullPointerException
at FCBayernSquad.removeDuplicateNumbers(FCBayernSquad.java:52)
at FCBayernSquad.main(FCBayernSquad.java:19)

Wäre dankbar über jede Hilfestellung.
mfg werdas34


Joshua Kimmich=32
Javi Martinez=5
Niklas Süle=4
Renato Sanches=35
David Alaba=25
Thomas Müller=25
Manuel Neuer=1
 
Was genau ist denn das Ziel? Soll der gesamte Einträge (Key, Value) gelöscht werden?
Edit: und welcher Eintrag soll stehen bleiben? Der erste der gefunden wurde ?
 
Ich seh gerade der Post ist leicht verschoben:
Inhalt:
Code:
Mats Hummels=5
Joshua Kimmich=32
Javi Martinez=5
Niklas Süle=4
Renato Sanches=35
David Alaba=25
Thomas Müller=25
Manuel Neuer=1

Ausgabe:
Code:
5
5Mats Hummels
32Joshua Kimmich
5Javi Martinez
4Niklas Süle
35Renato Sanches
25David Alaba
25Thomas Müller
1Manuel Neuer
25
nullMats Hummels <- Er setzt den Value auf null und nicht den Key
Exception in thread "main" java.lang.NullPointerException
at FCBayernSquad.removeDuplicateNumbers(FCBayernSquad.java:52)
at FCBayernSquad.main(FCBayernSquad.java:19)
Am Ende sollen doppelte Values komplett gelöscht werden:
Code:
Joshua Kimmich=32
Niklas Süle=4
Renato Sanches=35
Manuel Neuer=1
 
Java:
Iterator<String, Integer> it = map.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry<String,Integer> e = it.next();
    if (duplicate.contains(e.getValue())) {
        it.remove();
    }
}
Oder
Java:
map.entrySet().removeIf(e -> duplicate.contains(e.getValue()));
 

Neue Themen


Zurück
Oben