Map <Long, String> zu Map<String, Long>

M

moiksDot

Mitglied
Hey, ich sitze gerade an einer Application, ich versuche zu implementieren, dass wenn man eine Map gegeben hat, auch theroetisch die Eingabe anderesherum sein kann und der Input immernoch eine Map daraus machen kann und somit keine Exception schmeißen muss.....Bsp.:

Map.of( 2000L, Luft , _____ --> Map.of("Luft", 2000L
3000L, Erde, ______________________ --> "Erde", 3000L
4000L, Feuer ); _________________ __ --> "Feuer", 4000L);

wie kann man dies umsetzen in einer Methode?

Map<Long, String> elements ->so heißt die bestehende Map:
 
Zuletzt bearbeitet:
temi

temi

Top Contributor
Welche Eingabe denn?

Wenn du eine Methode add(String, Long) hast, dann ist es doch deine Sache das korrekt in der Map zu verwenden.
 
M

moiksDot

Mitglied
Lies die Map satzweise aus und schreib die Werte passend in eine neue Map 😉
ja genau das habe ich mir auch überlegt, ich wollte in die map iterieren und somit die Werte filtern und dann eben in die neue Map übetragen, jedoch weiß ich nicht, wenn ich die Werte mit .getKey und .getValue gesucht habe, wie ich diese in einer neuen map mit andere anordung platziere. Am ende will ich eine Map.of returnen.
Danke dir
 
mihe7

mihe7

Top Contributor
Es gibt aber einen kleinen Unterschied: Map.of liefert eine unveränderliche Map. Wenn Du also das gleiche Ergebnis haben willst, müsstest Du für die neu aufgebaute Map via z. B. Collections.unmodifiableMap entsprechend eine unveränderliche Map zurückgeben.
 
M

moiksDot

Mitglied
Es gibt aber einen kleinen Unterschied: Map.of liefert eine unveränderliche Map. Wenn Du also das gleiche Ergebnis haben willst, müsstest Du für die neu aufgebaute Map via z. B. Collections.unmodifiableMap entsprechend eine unveränderliche Map zurückgeben.
Naja genau das möchte ich ja, man legt eine Map <Long, String> elements an und füllt diese mit werten , neue Map.of und befüllt diese. Ich möchte jedoch versuchen, diese Werte aus der Map elements zu filtern und die Werte daraus zu nehmen und in eine neue Map<String, Long> packen, nur das jetzt der String das key elemnt ist.....aber Danke dir. Ich habe meine Methode gefolgt initialisiert

public static Map<String, Long> ElementsInvert (Map<Long, String>elemnts){return Map.of
}
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Es gibt aber einen kleinen Unterschied: Map.of liefert eine unveränderliche Map. Wenn Du also das gleiche Ergebnis haben willst, müsstest Du für die neu aufgebaute Map via z. B. Collections.unmodifiableMap entsprechend eine unveränderliche Map zurückgeben.
Oder Map.copyOf, wenn man eine wirklich unveränderliche Map will :)
 
B

Barista

Top Contributor
ReverseMap:
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class ReverseMap
{
    /**
     * Creates a map with entries of the specified map
     * with key and value exchanged.
     *
     * @param mapToReverse map to reverse
     * @return map with entries with key and value exchanged
     */
    public static Map<String, Long> reverseLongToStringMap(
            final Map<Long, String> mapToReverse )
    {
        final Map<String, Long> result = new HashMap<>();

        for ( final Entry<Long, String> entry : mapToReverse.entrySet() )
        {
            result.put(
                    entry.getValue(),
                    entry.getKey() );
        }

        return result;
    }

}

Wenn ein Value in der übergebenen Map mehrmals vorkommt, gewinnt der zuletzt aufgetretene Entry,
eventuell nicht das gewünschte Verhalten.
 

Ähnliche Java Themen


Oben