haal de tekenreekswaarde op uit HashMap, afhankelijk van de sleutelnaam

Ik heb een HashMapmet verschillende sleutels en waarden, hoe krijg ik één waarde eruit?

Ik heb een sleutel in de kaart genaamd my_code, deze zou een string moeten bevatten, hoe kan ik die krijgen zonder de kaart te doorlopen?

Tot nu toe heb ik…

  HashMap newMap = new HashMap(paramMap);
   String s = newMap.get("my_code").toString();

Ik verwacht een Stringte zien, zoals “ABC” of “DEF”, want dat is wat ik daar aanvankelijk invoeg, maar als ik een System.out.println()Ik krijg zoiets als java.lang.string#F0454

Sorry, ik ben niet zo bekend met kaarten zoals je waarschijnlijk wel kunt raden 😉


Antwoord 1, autoriteit 100%

Gebruik gewoon Map#get(key)?

Object value = map.get(myCode);

Hier is een tutorial over kaarten, misschien vind je het handig: http://java.sun.com/docs/books/tutorial/collections/interfaces/map.html.

Bewerken:je hebt je vraag als volgt bewerkt:

Ik verwacht een string te zien, zoals “ABC” of “DEF”, want dat is wat ik daar in eerste instantie heb ingevoerd, maar als ik een System.out.println() doe, krijg ik zoiets als java.lang.string#F0454

Sorry, ik ben niet zo bekend met kaarten, zoals je waarschijnlijk wel kunt raden 😉

Je ziet het resultaat van Object#toString(). Maar de java.lang.stringzou er al een moeten hebben geïmplementeerd, tenzij je een aangepasteimplementatie hebt gemaakt met een kleine sin de naam: java.lang.string. Als het daadwerkelijk een aangepast object is, moet u Object#toString()overschrijven om een ​​”door mensen leesbare tekenreeks” te krijgen wanneer u een System.out.println()of toString()op het gewenste object. Bijvoorbeeld:

@Override
public String toString() {
    return "This is Object X with a property value " + value;
}

Antwoord 2, autoriteit 34%

Als je sleutels/waarden opslaat als strings, dan werkt dit:

HashMap<String, String> newMap = new HashMap<String, String>();
newMap.put("my_code", "shhh_secret");
String value = newMap.get("my_code");

De vraag is wat er in de HashMap wordt ingevuld (sleutel & waarde)


Antwoord 3, autoriteit 6%

Als u Generieken gebruikt en uw kaart definieert als

Map<String,String> map = new HashMap<String,String>();

dan waarde ophalen als

String s = map.get("keyStr"); 

je hoeft de map.get() niet te typen of de methode toString aan te roepen om de String-waarde te krijgen


Antwoord 4, autoriteit 5%

Uw vraag is niet helemaal duidelijk, vrees ik. Een sleutel heeft geen “naam”; het wordt niets “geroepen” voor zover het de kaart betreft – het is slechts een sleutel en zal worden vergeleken met andere sleutels. Als je veel verschillende soorten sleutels hebt, raad ik je ten zeerste aan om ze voor de duidelijkheid op verschillende kaarten te plaatsen.

Als dit niet helpt, verduidelijk dan de vraag – bij voorkeur met wat code om te laten zien wat je bedoelt.


Antwoord 5, autoriteit 4%

map.get(myCode)


Antwoord 6, autoriteit 4%

Een belangrijk punt dat hier moet worden opgemerkt, is dat als uw sleutel een object is van een door de gebruiker gedefinieerde klasse in java, er een punt van moet worden gemaakt om de equals-methode te overschrijven. Omdat de methode HashMap.get(Objectsleutel) de methode equals gebruikt om de sleutelwaarde te matchen. Als u de equals-methode niet overschrijft, zal het proberen de waarde te vinden op basis van de referentie van de sleutel en niet de werkelijke waarde van de sleutel, in welk geval het altijd een null retourneert.


Antwoord 7, autoriteit 2%

Stel dat je HashMap hebt gedeclareerd als:-

HashMap<Character,Integer> hs = new HashMap<>();

Vervolgens is de sleutel in de kaart van het type Karaktergegevenstype en de waarde van het type int. Nu, om de waarde te krijgen die overeenkomt met de sleutel, ongeacht het type sleutel, waardetype, is de syntaxis:-

   char temp = 'a';
    if(hs.containsKey(temp)){
`       int val = hs.get(temp); //val is the value corresponding to key temp
    }

Volgens uw vraag wilt u dus een tekenreekswaarde krijgen die overeenkomt met een sleutel. Hiervoor declareert u HashMap als HashMap<“datatype of key”,”datatype of value” hs = new HashMap<>();
Als u dit gebruikt, wordt uw code schoner en hoeft u het resultaat van hs.get (“my_code”) niet naar string te converteren, omdat het standaard de waarde van string retourneert als men bij invoer de waarde als een string heeft behouden.


Antwoord 8

Dit is nog een voorbeeld van het gebruik van de functies keySet(), get(), values() en entrySet() om sleutels en waarden in een kaart te verkrijgen:

       Map<Integer, String> testKeyset = new HashMap<Integer, String>();
        testKeyset.put(1, "first");
        testKeyset.put(2, "second");
        testKeyset.put(3, "third");
        testKeyset.put(4, "fourth");
        // Print a single value relevant to a specified Key. (uses keySet())
        for(int mapKey: testKeyset.keySet())
            System.out.println(testKeyset.get(mapKey));
        // Print all values regardless of the key.
        for(String mapVal: testKeyset.values())
            System.out.println(mapVal.trim());
        // Displays the Map in Key-Value pairs (e.g: [1=first, 2=second, 3=third, 4=fourth])
        System.out.println(testKeyset.entrySet());

Antwoord 9

U kunt de methode get(Object key) uit de HashMap gebruiken.
Houd er rekening mee dat in veel gevallen uw Key Class de equals-methode moet overschrijven, om een ​​bruikbare klasse voor een Map-sleutel te zijn.


Antwoord 10

HashMap<Integer, String> hmap = new HashMap<Integer, String>();
 hmap.put(4, "DD");

De waarde die is toegewezen aan sleutel 4is DD

Other episodes