HashMap<Object, Boolean> toString problem
Bin ich die eine Karte vom Typ HashMap.
Ich versuche Durchlaufen Sie die map und für jeden Eintrag, für die das boolean-flag auf true gesetzt ist, bin ich versucht, drucken Sie das entsprechende Schlüssel-Wert.
Ich bin in der Lage, dies zu erreichen. Doch statt zu drucken die Zeichenfolge "key" - Werte, es gibt die String-Objekte. Ich habe versucht casting mit .toString() Funktion. Nichts gelöst.
Jegliche Hilfe würde sehr geschätzt werden.
Dank,S.
- Könnten Sie die post-code?
- Die Beschreibung des Problems der "Druck von string-Objekten anstelle von string-Werten Schlüssel" macht keinen Sinn. Bitte erläutern Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Nachfolge deutet darauf hin, dass die Werte in der Karte sind nicht vom Typ String und sind nicht von einer Art, die überschriebene toString-Methode, die ist, warum, wenn Sie anrufen, toString, erhalten Sie einen Wert wie "com.f5.lunaui.emproto.reports.Device_Sri@334003".
In Device_Sri, sollten Sie die toString-Methode auf den String, den Sie möchten:
Natürlich, werden Sie wahrscheinlich wollen, um den Wert berechnen "em_device90-36" aus den Bereichen der Device_Sri Klasse.
Möchten Sie zur Iteration über die Karte entrySet:
Das ist ein set, so können Sie Durchlaufen es:
Vereinfachung:
Möchten Sie wahrscheinlich so etwas wie dieses:
if(map.get(key) != null ){
. Aber weiter, anzeigen.get null zurück, sowohl wenn der Schlüssel nicht vorhanden ist ODER wenn der Schlüssel den Wert null ist (die Karten, das zulassen von null-Tasten).HashMap<String, Boolean>
seit der OP explizit erwähnt, dass in der Frage. Natürlich wird meine Lösung würde nicht funktionieren, wenn die Werte wurden nicht vom TypBoolean
, aber es war offensichtlich, dass Sie waren...Sollte dies funktionieren:
for( Entry<String, Boolean> entry : myMap.entrySet() )
Hinzufügen, um die anderen Antworten, erhalten Sie einen null-Zeiger-Ausnahme aus, wenn der Wert null ist.
Dies ist, weil der Wert ist eine
Boolean
und werden ohne Verpackung auf einemboolean
. Es entsprichte.getValue().booleanValue()
.Wenn Sie wollen guard, gegen den Wert null, dann verwenden Sie
Ich versuche, drucken Sie die Taste nur, wenn die corresopnding boolean-Wert true ist. So etwas wie der code oben. In diesem Ergebnis nicht enthalten, der string und es druckt das Objekt.
Ich sollte der Wert gedruckt zu werden als "em-device90-36". Aber stattdessen bekomme ich diese gedruckt
(String)ent.getKey()
fehl und löst eine classcastexception-Fehler, wenn der Map-Schlüssel ist kein String. Jedoch, diese Linie (ohne cast) würde NICHT werfen:result = result + ent.getKey() + ", ";
Das ist, weil der String-operator+ überladen ist, und ruft toString auf seine zweite operand ist, als wenn Sie geschrieben hatte, dieses " Ergebnis = Ergebnis + ent.getKey().toString + ", "; Dies ist sicher, da haben alle Objekte eine toString-Methode, und da String operator+ hat auch überladungen für alle primitiven Typen, die, konvertieren Sie Sie in Strings. Das Ergebnis Sie bekommen haben, sieht aus wie Objekt.toString aufgerufen wird (mehr)private Map deviceChecked = new HashMap(); deviceChecked = checkMap;
erstellt und thgen durchbricht die new HashMap; Sie brauchen nur die Referenz (deviceChecked) hier.