2017-04-03 1 views
-3

Ich habe eine HashMap mit einer ArrayList als Object erstellt.Abrufen von Schlüsselwert einer HashMap mit ArrayList als Objekt

Ich möchte einen Schlüsselwert abrufen, der einem bestimmten Wert in einer ArrayList entspricht. Ich mache es so, aber nicht in der Lage folgt so

public static Host getHost(double abc){ 
    for(int i=0;i<MapTable.size();i++){  
     for(int j=0;j<MapTable.get(i).size();j++){ 
      if(MapTable.get(i).get(j) == abc){ 
       for(Map.Entry<Host, ArrayList<ptr>> e: MapTable.entrySet()){ 
        value = e.getValue().get(j); 
        if(value == abc){ 
         key = e.getKey(); 
         break; 
        } 
       } 

      } 
     } 

    } 
     return(key); 
} 
+1

Denken Sie darüber nach, was mapTable.get (i) bedeutet. Es ist *** NICHT *** bekommen den i-ten Eintrag. –

Antwort

0

Was Sie derzeit haben, ist ziemlich schwer zu lesen. Ein Teil davon ist, dass es nicht einigen gängigen Konventionen folgt. Ich würde zuerst die Klassennamen in UpperCamelCase und die Variablen in CamelCase ändern.

Als nächstes gibt es zu viele Schleifen; und wo Sie sie verwenden, würde ich die foreach() Stil-Syntax bevorzugen.

Wenn ich das richtig verstanden, dass Sie den Schlüssel zu bekommen versuchen, wo eine Werteliste einen bestimmten Ptr enthält, dann:

public static findKeyForPtr(final Ptr searchPtr) { 
    for (Map.Entry<Xyz, List<Ptr>> entry : map.entrySet()) { 
     if (entry.getValue().contains(searchPtr)) { 
      return entry.getKey(); 
     } 
    } 
} 

Wie oben, können Sie einfach auf der Liste nennen. Sie brauchen dafür keine zusätzliche Schleife.

0

einfach zu tun, um die Karte und überprüft die Liste iterieren, wenn sie den gewünschten Wert enthält.

public Xyz retriveKey(Ptr value) { 
     HashMap<Xyz, ArrayList<Ptr>> mapTable = new HashMap<String, ArrayList<Ptr>>(); 

     for(Map.Entry<String, ArrayList<Integer>> entry : mapTable.entrySet()) { 
      if(entry.getValue().contains(value)){ 
      return entry.key(); 
     } 

     return null; 
    } 
Verwandte Themen