2017-11-29 4 views
0

Der Code sieht so aus.Drucken aller Daten von HashMap

public class Album { 
    public String currentTitle; 
    public HashMap<String, List<Music>> albumList = new HashMap<String, List<Music>>(); 

    //setting the album's title 
    public Album(String albumTitle) { 
     this.currentTitle = albumTitle; //represents object's name 
     albumList.put(currentTitle, null); 
    } 

    //add music to album 
    public void addMusicToThis(Music music) { 
     //only if value is empty 
     if(albumList.get(currentTitle) == null) { 
      albumList.put(currentTitle, new ArrayList<Music>()); 
     } 
     albumList.get(currentTitle).add(music); 
    } 

    public void printMusicList() { 

    } 
} 

und ich möchte alle Werte für das spezifische Album drucken, wie

Album album = new Album("Test1"); 
Album album2 = new Album("Test2"); 
album.addMusicToThis(something); //this code works fine 
album2.addMusicToThis(something2); 

album.printMusicList(); //maybe "something" 
album2.printMusicList(); //maybe "something2" 

aber die Werte der Hashmap sind alle zur Liste gesetzt, und ich kann den Weg nicht finden die Musiken zum Ausdrucken . Und angenommen, dass der Name der Musik ist alles festgelegt.

+0

Sie zweimal zu durchlaufen haben, zu drucken, einmal über die hashmap, dann ein zweites Mal über jeden * Wert * des hashmap 'for (String album: albumList.keySet()) {for (Musikmusik: albumList.get (album)) {/ * use music * /}}' –

+0

Was sind Musikunterricht attibrutes? –

Antwort

0

Sie müssen über die erhaltenen Liste iterieren und die einzelnen Einträge

In Java 8 drucken können Sie,

albumList.get(currentTitle).forEach((music) -> System.out.println(musice.getRequiredDetails)}) 
0

können Sie rufen albumList.entrySet(), die eigentlich iterable ist, durchqueren sie und drucken Sie es jedoch, das Sie mögen

1

Sie haben soeben die Liste für eine bestimmte Zeichenfolge erhalten, und es iterieren

for(Music m : albumList.get(this.currentTitle)) { 
    System.out.println(m.getName()); 
} 

Es ist Nicht wirklich klar, warum Sie eine Hashmap verwenden. Dein Schlüssel kann sich niemals ändern.

0

Ich denke, Sie sollten die albumTitle als Argument der printMusicList Funktion hinzuzufügen.

Zum Beispiel

public void printMusicList(String albumTitle) { 
     List<Music> musics = albumList.get(albumTitle); 
     for (Music music : musics) { 
      System.out.println(music); 
     } 
    } 

oder wenn Sie wollen es alle

public void printMusicList() { 
     Set<String> keys = albumList.keySet(); 
     for (String key : keys) { 
      List<Music> musics = albumList.get(key); 
      for (Music music : musics) { 
       System.out.println(music); 
      } 
     } 
    } 
Verwandte Themen