2016-05-06 6 views
0

Ich versuche das zu lösen, aber ich stecke jetzt hier für eine Weile fest. Mein Problem ist, dass ich keinen Weg finden kann, wie man ein Array-Objekt in meine hashmap einfügt.Wie setze ich ein Array-Objekt in hashmap?

Hier ist mein Beispielcode von hashmap für Drop-Down-Menü, das ich von Google bekam.

private Map<String,Map<String,String>> data2 = new HashMap<String,Map<String,String>>(); 
private String country; 
private String city; 
private Map<String, String> countries; 
private Map<String,String> cities; 

countries = new HashMap<String, String>(); 
     countries.put("USA", "USA"); 
     countries.put("Germany", "Germany"); 
     countries.put("Brazil", "Brazil"); 

     Map<String,String> map = new HashMap<String, String>(); 
     map.put("New York", "New York"); 
     map.put("San Francisco", "San Francisco"); 
     map.put("Denver", "Denver"); 
     data2.put("USA", map); 

     map = new HashMap<String, String>(); 
     map.put("Berlin", "Berlin"); 
     map.put("Munich", "Munich"); 
     map.put("Frankfurt", "Frankfurt"); 
     data2.put("Germany", map); 

Jetzt .. Mein Problem ist, wie meine Objekte in hashmap zu setzen.

Hier ist mein Code, um das Array-Objekt in das Abrufen.

 while(rs.next()){ 
        PropertyData reader = new PropertyData(); 
        id = rs.getInt("id"); 
        prop_name = rs.getString("prop_name"); 
        prop_value = rs.getString("prop_value"); 
        engine_name = rs.getString("engine_name"); 
        //other setter.. 


        reader.setId(id); 
        reader.setPropName(prop_name); 
        reader.setPropValue(prop_value); 
        reader.setEngineName(engine_name); 
        //other setter.. 

        prop.add(reader); 
       } 

Aus dem obigen Code. Ich möchte die id auf hashmap Schlüssel setzen und propname auf hashmap string name. Einmal ausgewählt, möchte ich andere Werte anzeigen, die auf die ID verweisen.

Und das ist, wo mein Objekt wurde hinzugefügt.

Ich habe versucht, es auf meiner hashmap initialisiert, aber es gab null zurück.

+0

Es ist unmöglich zu wissen, was Sie tun möchten, stellen bessere Frage, schreiben einige Code, der komplett (betriebsbereit) ist und zeigt Ihr Problem. –

+0

Es würde genügen, nur zu sagen * was * du * setzen willst * und * wo * du es setzen willst. 2 Zeilen Code. – Idos

+0

okay warten krank edit es –

Antwort

0
new HashMap<String, String>() 

sagt, dass Schlüssel vom Typ String und Wert sein wird, wird vom Typ String sein. Wenn Sie Property im Wert haben wollen, dann definieren sie als

new HashMap<String, PropertyData>() 
0

Wenn Sie die HashMap mit der folgenden Notation erstellen können, eine Liste zur Karte hinzufügen können ..

HashMap<String, List<PropertyData>> map = new HashMap<>(); 
0

Ok, Sie haben Daten in dieser Liste:

List<PropertyData> prop = new ArrayList<PropertyData>(); 

nun die Karte wie folgt erstellen (wenn PropertyData eine einzigartige id hat - auch eingestellt Größe wie die Größe des Arrays, wird getan Ändern der Größe o nly einmal):

HashMap<Integer, PropertyData> map = new HashMap<>(prop.size()); 

Und das ist, wie Sie es in der Karte platzieren:

for (PropertyData pd : prop) map.put(pd.getId(), pd); 

Wenn id in PropertyData nicht eindeutig ist, int hashCode() Funktion erstellen, die int einzigartig schaffen wird (basierend auf Werten in Alle Variablen - IDE kann das für Sie erstellen.

+0

Ich versuchte dies, aber die IDE schlägt vor, um die Umwandlung zu Karte dann wurde es so. ** ((List ) map) .add (pd.getId(), pd); ** Dann habe ich einen Fehler java.util.HashMap kann nicht in java.util.List –

+1

entschuldigt werden, mein schlechtes falsches Funktion sollte es sein map.put nicht map.add .. ich werde meine Antwort aktualisieren ... –

+1

danke Kumpel. Es funktionierte! –