HashMap containsKey liefert immer false zurück

Slymenstra

Mitglied
Hallo Forum,

ich habe eine Hashmap. In der Hashmap fehlen Schlüssel, die ich rauskriegen möchte.
Dazu habe ich eine Liste erstellt, die alle Schlüssel beinhaltet, die es eigentlich geben sollte. Die Liste heißt names im Beispiel und die Hashmap heißt namesHash.

Java:
System.out.println(names.contains(namesHash.containsKey(names.get(0))));
System.out.println(names.get(0));

        for(Map.Entry e1 : namesHash.entrySet()){
            String key1 = e1.getKey().toString();
            if(key1.equals("||/locus_tag=LVIS_0001")){
                System.out.println("Value zu Key: " + key1 + "\t" + e1.getValue());
            }
        }

die Ausgabe ist:
false
||/lalala=LVIS_0001
Value zu Key: ||/lalala=LVIS_0001 ||/lalala=LVIS_0001 ||/product=DNA replication ATPase initiation

Also irgendwie scheint die containsKey Abfrage nicht zu funktionierenm aber ich weiß nicht warum.
 
S

SlaterB

Gast
http://www.java-forum.org/allgemeine-java-themen/110484-string-vergleich-contains-funktioniert.html
gleiches Thema oder Zufall?

gehe nach meiner Anleitung dort
http://www.java-forum.org/allgemein...rgleich-contains-funktioniert.html#post709875
vor:

extrahiere den key1 aus dem if in eine Variablen x, außerdem names.get(0) in eine Variablen y,
was ergibt x.equals(y)?
wie lang sind die beiden Strings jeweils (Leerzeichen sieht man in der Ausgabe nicht)?
notfalls Zeichen für Zeichen vergleichen

bzw. vergleiche einfach y = names.get(0) mit "||/locus_tag=LVIS_0001"
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
ungenaue Antwort,
hast du jetzt nur equals ausgeführt oder auch die Längen und die einzelnen Zeichen vergleichen?

edit:
selbst wenn ich dein Posting zitiere kann ich das Leerzeichen am Ende der zweiten Zeile der Ausgabe sehen ;)

Code:
false####
||/lalala=LVIS_0001 #####
 

Slymenstra

Mitglied
Tschuldige, also ich habe mit equals verglichen, das liefert false zurück in beide richtungen. also einmal variable aus hashmap x und variable aus liste y
x.equals(y)
y.equals(x)

dann habe ich die Länge verglichen, da hast du Recht, da ist ein Leerzeichen, wenn ich das abschneide und die gleiche Länge habe, dann liefert das contains leider immer noch false zurück.

Jetzt müsste ich zeichenweise vergleichen. Weißt du, ob's da vielleicht von Java schon was gibt?
 
S

SlaterB

Gast
> wenn ich das abschneide und die gleiche Länge habe, dann liefert das contains leider immer noch false zurück.

Code Code Code

wenn du
Java:
String x = "aaa"
x.substring(0,1);
// etwas mit x machen
hast, dann ist x immer noch 3 Zeichen lang,
Strings sind unveränderlich, es müsste [c]x = x.substring(0,1);[/c] heißen

------

> Jetzt müsste ich zeichenweise vergleichen. Weißt du, ob's da vielleicht von Java schon was gibt?

...
gerade weil das, was es schon gibt (contains, equals usw.) viele interne Dinge macht, die du im Endergebnis kaum verstehst,
sollst du doch gerade manuell selber die tiefen Details anschauen,
eine for-Schleife mit charAt() ist doch nicht zuviel verlangt, falls es nicht eh wahrscheinlicher am Leerzeichen liegt
 

Reggie

Aktives Mitglied
Stimmt schon!
Java:
System.out.println(names.contains(namesHash.containsKey(names.get(0))));
Hier wird Ein String abgefragt ob dieser einen Boolaen enthält. Und das wird nie sein.
Java:
System.out.println(names.contains(namesHash.get(names.get(0))));
Wird wahrscheindlich das gewünschte Ergebnis bringen.
 

Landei

Top Contributor
Nebenbei: Man sollte schon Generics verwenden, etwa
Java:
Map<Integer, Double> map = ...
for(Map.Entry<Integer, Double> entry : map.entrySet()) {
  //keine casts notwendig 
  Integer i = entry.getKey(); 
  Double d = entry.getValue();
  ... 
}
 

Slymenstra

Mitglied
Danke für die vielen Tipps.

Der Code zum String-Abschneiden schaut so aus:
Java:
s = s.substring(0, (s.length())-1);
names.add(s);

Wenn ich dann die "contains"-Abfrage mache:
Java:
System.out.println(names.contains(namesHash.get(names.get(0))));
krieg ich immer noch false

Ich suche mal weiter, vielleicht finde ich den Fehler ja noch vor Weihnachten.
 

DerEisteeTrinker

Bekanntes Mitglied
Ich würde dir empfehlen mal den Debugger anzuwerfen und zu schauen, ob der Key überhaupt drin steht in der Map und dann versuch mal die Strings getrimmt zu vergleichen und auch getrimmt den Key einzufügen
 
S

SlaterB

Gast
dass
> System.out.println(names.contains(namesHash.get(names.get(0))));
bzw. ähnliche Konstrukte nicht besonders sinnvoll sind wurde auch schon geschrieben,
nur equals zwischen zwei Strings ist interessant

Java:
public class Test
{
    public static void main(String[] args)
    {
        String x = "a";
        String s = "a ";
        System.out.println(s.equals(x));
        s = s.substring(0, s.length() - 1);
        System.out.println(s + "#");
        System.out.println(s.equals(x));
    }
}
 
Zuletzt bearbeitet von einem Moderator:

Slymenstra

Mitglied
Ich schaue meine Eingabe nochmal ganz genau an. :rtfm:
Vielleicht liegt da mein Problem.

equals zwischen zwei Strings liefert false zurück.
Java:
String name1 = names.get(0);
System.out.println(key1.equals(name1));
 

DerEisteeTrinker

Bekanntes Mitglied
Für solche Sachen fleißig mit Log-Einträgen um dich werfen und alles aufschreiben. Wenn du dann die Anwendung produktiv gibst, dann kannst den Log-Level wieder hochschrauben und die Sache ist geritzt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
B HashMap.containsKey. Allgemeine Java-Themen 10
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
T HashMap values Bearbeitung Allgemeine Java-Themen 4
T Hashmap Values Bearbeitung Allgemeine Java-Themen 1
JavaJakob22 Bestimmte HashMap importieren Allgemeine Java-Themen 4
killig HashMap mit if-Anweisung überprüfen Allgemeine Java-Themen 4
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
L HashMap Allgemeine Java-Themen 10
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
B HashMap Duplikate Allgemeine Java-Themen 4
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
F Tabelle aus CSV, 2 dimensionale HashMap? Allgemeine Java-Themen 4
D Mit Java PHP hashmap lesen Allgemeine Java-Themen 1
H Swing HashMap zu Tabelle macht mir Probleme Allgemeine Java-Themen 4
B HashMap aus Value Key bekommen Allgemeine Java-Themen 2
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
J Problem bei Hashmap Key-Abfrage Allgemeine Java-Themen 4
X JSONObject auslesen und in HashMap hinterlegen Allgemeine Java-Themen 16
N Werte aus Hashmap auslesen und übertragen Allgemeine Java-Themen 8
JavaWolf165 JsonObject in HashMap umwandeln Allgemeine Java-Themen 16
R ArrayList und HashMap Allgemeine Java-Themen 7
L Assoziatives Datenfeld, schneller wie Hashmap Allgemeine Java-Themen 35
G Methoden HashMap speichert unter falschen Schlüsseln Allgemeine Java-Themen 6
D Verschachtelte HashMap initializieren Allgemeine Java-Themen 1
L Variablen HashMap nimmt value nicht an Allgemeine Java-Themen 3
R Hierarchie mit HashMap darstellen Allgemeine Java-Themen 19
D Datentypen HashCollision in HashMap Allgemeine Java-Themen 3
Z Concurrent Modification Exception - HashMap (kein remove) Allgemeine Java-Themen 4
B Zugriff auf eine HashMap Allgemeine Java-Themen 4
B Userdaten in Hashmap speichern - Servlet Allgemeine Java-Themen 6
T Hashmap mit geordneter/ungeordneter liste als Value Allgemeine Java-Themen 5
I HashMap key wird nicht erkannt trotz überschriebener equals/hashCode Methode Allgemeine Java-Themen 6
M Füllfaktor einer Hashmap Allgemeine Java-Themen 7
D Datentypen HashMap Allgemeine Java-Themen 5
R Collections Performance einer HashMap Allgemeine Java-Themen 26
C LinkedList und ArrayList in HashMap Allgemeine Java-Themen 4
T Erste Schritte HashMap<String, int> Allgemeine Java-Themen 2
K Hashmap sortieren Allgemeine Java-Themen 6
F HashMap überschreibt Daten von anderen HashMap Allgemeine Java-Themen 5
H Problem beim Sortieren einer HashMap mit TreeSet Allgemeine Java-Themen 4
K HashMap sorting verhindern Allgemeine Java-Themen 10
J Generic von einer ArrayList/HashMap bekommen Allgemeine Java-Themen 7
L HashMap mit Enum Keys Allgemeine Java-Themen 3
J Array als Schlüssel für HashMap Allgemeine Java-Themen 6
S Geschwindigkeit HashMap oder .getParent Allgemeine Java-Themen 5
V Hashmap-Frage Allgemeine Java-Themen 3
M HashMap - Ich bin verwirrt Allgemeine Java-Themen 3
H2SO3- multiple Hashmap Allgemeine Java-Themen 5
K Threading - schreiben auf Hashmap/löschen - ConcurrentModificationException Allgemeine Java-Themen 3
J NullPointerException mit HashMap Allgemeine Java-Themen 2
V Probleme mit eigener Hashmap Allgemeine Java-Themen 10
N HashMap<String,Vector<String>> a = new HashMap<String,Vector<String>>(); Allgemeine Java-Themen 4
I HashMap Problem... Allgemeine Java-Themen 3
C HashMap Allgemeine Java-Themen 12
Daniel_L Map/HashMap - Reihenfolge von Einträgen Allgemeine Java-Themen 4
L HashMap Key Reihenfolge umkehren Allgemeine Java-Themen 8
N wie greife ich auf hashmap in vector zu Allgemeine Java-Themen 9
J Inhalt von HashMap vergleichen Allgemeine Java-Themen 3
Z Serialisierung und Deserialisierung einer HashMap Allgemeine Java-Themen 17
P Wieso HashMap-Zugriff mit Object, statt mit MyObject? Allgemeine Java-Themen 12
K Serialisierung von Hashmap in Vector Allgemeine Java-Themen 3
T Hashmap füllen mit rs sortierung Allgemeine Java-Themen 9
D HashMap sortieren Allgemeine Java-Themen 2
P Große Datenmenge wie speichern (HashMap? TreeMap?) Allgemeine Java-Themen 11
D HashMap Problem Allgemeine Java-Themen 14
G Runnables aus Hashmap starten Allgemeine Java-Themen 4
J java.util.ConcurrentModificationException bei HashMap? Allgemeine Java-Themen 2
G HashMap key ändern Allgemeine Java-Themen 5
L HashMap / Objekte auf Festplatte zur Laufzeit auf HD swappen Allgemeine Java-Themen 7
S Problem mit Hashmap Allgemeine Java-Themen 2
G Datei einlesen und in HashMap verarbeiten Allgemeine Java-Themen 3
E Auslesen aus Hashmap Allgemeine Java-Themen 3
P HashMap mit mehreren gleichen keys Allgemeine Java-Themen 4
alexpetri hashmap bästpractice Allgemeine Java-Themen 4
J HashMap mit Webservice realisierbar? Allgemeine Java-Themen 4
ARadauer hashmap vs hastable Allgemeine Java-Themen 5
T HashMap#values Reihenfolge Allgemeine Java-Themen 13
M ArrayList sortieren - HashMap mit sort_id vorhanden Allgemeine Java-Themen 2
L Wie kann ich eine HashMap abspeichern? Allgemeine Java-Themen 3
T HashMap (String, Object(String , int)) nach int sortieren Allgemeine Java-Themen 7
M HashMap kapselt zwei Objekte aber wie baut man eine Matrix? Allgemeine Java-Themen 2
E MySQL-Datenbank <-> HashMap/TreeMap Allgemeine Java-Themen 1
P List in Hashmap schreiben Allgemeine Java-Themen 5
M Threads in einer Hashmap Allgemeine Java-Themen 5
P HashMap an 2 Stellen veränderbar Allgemeine Java-Themen 13
P HashMap auflösen Allgemeine Java-Themen 9
MQue HashMap durchlaufen Allgemeine Java-Themen 2
MQue HashMap Allgemeine Java-Themen 2
M HashMap kommt beim Löschen aus dem Tritt Allgemeine Java-Themen 6
MQue HashMap Allgemeine Java-Themen 6
MQue HashMap Allgemeine Java-Themen 9
MQue Sichtbarkeit/HashMap/NullPointerexception Allgemeine Java-Themen 2
J byte-Array in Hashmap speichern? Allgemeine Java-Themen 3
S Klasse in HashMap speichern Allgemeine Java-Themen 3
G [quote]the type HashMap is not generic; it cannot be paramet Allgemeine Java-Themen 4
M HashMap sortiert Allgemeine Java-Themen 6
G Performance JDOM - DOM - eigene HashMap (SAX) Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben