arraylist aus einer hashmap auslesen

  • Themenstarter Themenstarter drake_xxx
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

drake_xxx

Gast
Hallo!
Ich steh grad voll auf der Leitung; vielleicht kann mir ja jemand schnell helfen:

also ich hab folgende map:
Code:
private Map<String, ArrayList<String>> path = new HashMap<String, ArrayList<String>>();

Ich will nun zu jedem key die dazugehörige Liste ausgeben:
Code:
Iterator iter = path.keySet().iterator();
while (iter.hasNext()) {
  for (String element : path.get(iter.next())) {
    System.out.println(element);
  }
}

Nur das is irgendwie absolut falsch!

Danke im voraus!
 
Benutz einen Iterator über die Entries. Von einem Entry kannst du dir dann Key und Value ausgeben lassen,
 
meintest du sowas in der Art:

Code:
Iterator iter = path.entrySet().iterator();
                
                Set<Entry<String, ArrayList<String>>> entries = path.entrySet();
                Iterator<Entry<String, ArrayList<String>>> iterateEdges = entries.iterator();
                
                while (iterateEdges.hasNext()) {                  
                    for (String e : iterateEdges.next().getValue()) {
                        System.out.println(e);
                    }
                }

nur irgendwie funktioniert dies auch nicht! :-(
 
mit so einer genauen Fehlerbeschreibung wirst du es noch weit bringen im Leben, Glückwunsch,

Code:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Test {

	public static void main(String[] args) throws Exception {

		Map<String, ArrayList<String>> path = new HashMap<String, ArrayList<String>>();

		ArrayList<String> a = new ArrayList<String>();
		a.add("x");
		a.add("y");
		path.put("hello", a);
		path.put("world", null);

		Iterator iter = path.entrySet().iterator();

		Set<Entry<String, ArrayList<String>>> entries = path.entrySet();
		Iterator<Entry<String, ArrayList<String>>> iterateEdges = entries.iterator();

		while (iterateEdges.hasNext()) {
			Entry<String, ArrayList<String>> entry = iterateEdges.next();
			System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue());
			if (entry.getValue() != null) {
				for (String e : entry.getValue()) {
					System.out.println(e);
				}
			}
		}
	}

}
läuft, Ausgabe:
key: hello, value: [x, y]
x
y
key: world, value: null
 
Ja sorry! Habs nur schnell gepostet, bevor ich in die Mittagspause ging!

Mein Fehler liegt in der Befüllung der Map. Werd mich auf die Suche begeben!
Aber danke auf jeden Fall für euere Hilfe und danke fürs ausprobieren!
 
hab meinen Fehler gefunden:

hab meine map wie folgt gefüllt:
Code:
while (..) {
pathList.add("blabla");
...    
path.put(name, pathList);
...
pathList.clear();
}
Das Problem war, dass in der Map die Adresse der Liste gespeichert wurde. Und somit wurde natürlich immer nur der letzte Listeneintrag angezeigt.
Jetzt erzeug ich wie folgt immer eine neue Liste bei jedem Schleifendurchgang:
Code:
pathList = new ArrayList<String>();
Weiss zwar net, ob dies so sehr elegant ist, doch mir fällt keine bessere Möglichkeit ein!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben