HashMap Problem - Nur der erste Eintrag verfügbar

Dieses Thema im Forum "Programmierung" wurde erstellt von To_Bii, 1. Juli 2014.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. To_Bii
    Offline

    To_Bii

    Registriert seit:
    27. Januar 2014
    Beiträge:
    14
    Hallo zusammen,

    ich habe ein ziemlich merkwürdiges Problem und hoffe das mir hier jemand mal helfen kann, ich blicke gerade einfach nicht mehr durch... Vielleicht ist es einfach nur ein dummer Denkfehler ^^.

    Also ich habe in einer Klasse eine Hashmap, welche zuerst über eine Methode "befüllt" wird. Zu diesem Zeitpunkt beträgt die Größe der Hashmap (über .size() ) 4!

    Wenn ich dann aber später über eine andere Methode der Klasse versuche die hashmap auszulesen funktioniert das nicht richtig:
    -Ich kann nurnoch den ersten Eintrag abrufen und die Größe der hashmap (.size()) beträgt nurnoch 1!

    Das wäre der Code:
    Code (Text):
    1.     class [...]
    2.      
    3.     private HashMap<String, Integer> attributes = new HashMap<String,Integer>();
    4.      
    5.     [...]
    6.      
    7.     private HashMap<String, String> loadRawData(List<String> data) {
    8.     HashMap<String, String> map = new HashMap<String, String>();
    9.     if(data != null && !data.isEmpty()) {
    10.      
    11.     System.out.print("Länge der Liste:"+data.size());
    12.     for(int i=0;i<data.size();i++){
    13.     String dstring=data.get(i);
    14.     dstring = ChatColor.stripColor(dstring);
    15.      
    16.     try {
    17.     String[] kv = dstring.split(": ");
    18.      
    19.     map.put(kv[0], kv[1]);
    20.     System.out.print(kv[0]+" "+ kv[1]);
    21.     } catch (Exception e) {
    22.     RPG.getPluginLogger().severe("Error.....");
    23.     }
    24.      
    25.     }
    26.     }
    27.     System.out.print("Mapsize:"+map.size()); //hier ist die Map noch 4 (beispielhaft 4) groß
    28.      
    29.     [...]
    30.     public boolean hasAttribute(String type) {
    31.     System.out.print("leer?"+attributes.isEmpty());
    32.     System.out.print("Test:"+attributes.get(type));
    33.     System.out.print("Groesse der Map:"+attributes.size()); //hier ist sie nurnoch 1 groß!
    34.     return attributes.containsKey(type);
    35.      
    36.     }
    37.      
    38.     public int getAttribute(AttributeType type) {
    39.     int back=0;
    40.     if (hasAttribute(type.getName())) {
    41.     back= attributes.get(type.getName());
    42.      
    43.     }else{
    44.     back=-1;
    45.     }
    46.     System.out.print("back:"+back);
    47.     return back;
    48.     }
    Die Methode getAttribute rufe ich auf!


    Danke schonmal!
     
    #1
  2. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Ohne dass ich den kompletten Code sehen (auch das [...]), kann ich dir nicht helfen. Bitte poste den Code deiner kompletten Code der Klasse formatiert(!) und evtl. auch die anderen Methoden, die die gepostete Methode aufrufen.
     
    #2
  3. To_Bii
    Offline

    To_Bii

    Registriert seit:
    27. Januar 2014
    Beiträge:
    14
    Alles was [...] beinhaltet hat mit der Hashmap nichts zu tun, das ist auch mein Problem. Nirgendwo wird was an der Hashmap verändert nur in diesen Methoden :/!
     
    #3
  4. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Du rufst die Methode size() erst auf map und dann auf attributes auf. Kein Wunder, dass diese eine andere Größe haben.
     
    #4
    1 Person gefällt das.
  5. To_Bii
    Offline

    To_Bii

    Registriert seit:
    27. Januar 2014
    Beiträge:
    14
    Danke für den hinweis !!!
    Jetzt weiß ich wo ich weiter nach dem fehler suchen kann ;)!
    Kann geschlossen werden!
     
    #5
Status des Themas:
Es sind keine weiteren Antworten möglich.