Announcement

Collapse
No announcement yet.

HashMaps: checken ob Value von einem key <null> ist ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • HashMaps: checken ob Value von einem key <null> ist ?

    Hallo,

    ich habe ein Problem. Wie kann ich checken, ob der Wert eines key in einer HashMap null ist oder nicht ?

    Etwas wie if(myMap.contains("kreditWunsch")){} sagt mir ja nur, ob der key in der Map ist. Das ist er immer, und zumeist auch mit einem Wert. nur manchmal ist kein Wert dazu gesetzt.

    Ursprünglich sah mein Code so aus:

    if(myMap.get("kreditWunsch") != null){}


    Allerdings schmeisst er mir da manchmal eine exception, da er wohl den Wert auszulesen versucht um zu überprüfen ob er null ist oder nicht....

    Keine Ahnung, wie sowas geht.

    Vielen Dank, für eure Hilfe !

  • #2
    Wenn Du überprüfen willst ob der key existiert und den Eintrag null hat, mußt Du beides abfragen:

    Code:
    if(myMap.containsKey("key") && myMap.get("key") == null)
    Wenn Du nur wissen willst ob der Wert ungleich null ist reicht

    Code:
    if(myMap.get("key") != null)
    Eine Exception wirft er bei einer HashMap nicht, egal ob der key existiert oder nicht oder ob er auf null abbildet. Klar versucht er bei get() den Wert auszulesen, ist ja der Sinn der Sache. Nur eine Exception sollte da nie fliegen, selbst wenn der key nicht existiert. Dann kommt halt auch null zurück.
    Zuletzt editiert von Alwin Ibba; 13.03.2007, 22:31.

    Comment


    • #3
      Hmm, das dachte ich ja eigentlich auch.

      Nur ist es so, daß ich meine HashMap so ähnlich baue
      Code:
      
         myMap.put("Zinsen",zinsen);
         myMap.put("zinsUndKreditZusammen", myMap.get("Zinsen").toString()+"  " + myMap.get("kreditWunsch").toString());
      Kann es sein, daß ich ein Problem mit der toString-Methode kriege, da die Map zwar null zurückliefert, dieser Wert dann jedoch versucht wird zu nem String umgebaut zu werden ?

      Wann sollte man denn HashMap und nicht HashTable verweden ?
      Mit einer HashMap bin ich ja zum Beispiel nicht in der Lage diese mit einer Schleife zu durchlaufen und zu sagen gib mir alle key-value paare, bei denen der zu dem key gehörige value nicht null ist, oder ?

      Comment


      • #4
        Code:
        myMap.get("Zinsen").toString()
        schmeißt natürlich eine NullPointerException, wenn get() null liefert.
        Also entweder abfragen oder ev.

        Code:
        String.valueOf(myMap.get("Zinsen"))
        benutzen. Dann kommt halt "null" als String zurück, wenn get() null liefert. Weiß nicht ob Dir das so taugt.

        HashMap ist halt nicht synchronisiert und daher etwas schneller als Hashtable und erlaubt außerdem null als key und value. Ansonsten geben sich die beiden nichts.

        Natürlich kannst Du in einer Schleife über die Map iterieren. Im Prinzip so (in alter Syntax):

        Code:
        Iterator iterator = myMap.entrySet().iterator();
        while(iterator.hasNext())
        {
                Map.Entry entry = (Map.Entry)iterator.next();
                Object key = entry.getKey();
                Object value = entry.getValue();
        }
        null-Werte rausfiltern mußt Du selber. Stellt sich halt die Frage ob das so sinnvoll ist, das da überhaupt null-Werte drinstehen, aber das mußt Du anhand Deiner Aufgabenstellung entscheiden.

        Comment


        • #5
          Vielen lieben Dank, für deine Hilfe !

          Also gut, dann werd ich ab jetzt nur HashMaps nehmen, da sie anscheinend doch bessere Vorteile bieten.

          Also ursprünglich will ich aus den daten einer HashMap ein xml file füllen. Da diese immer einen attributsnamen brauchen (der key der hashMap) allerdings es auch sein kann, das der value null ist, kann es gut sein, daß ich keys in der Map habe, welche allerdings nicht immer einen Wert haben.

          Und iterieren will ich nur, damit ich - für eine 2te Klasse - sozusagen die HashMap (mit den null-values) kopiere in eine HashMap, welche keine null-values hat.

          Also so in der Art: "kopiere mir die HashMap mit allen keys, welche keine null-values dazu haben" in eine neue HashMap.


          OK, aber das werd ich schon irgendwie rausfinden.


          Vielen lieben Dank euch !!!!!

          Comment

          Working...
          X