2017-08-03 3 views
0

私はJavaコレクションフレームワークを使用しています。私は、次のコードを持っている:JCFマップでのArrayListの使用

private Map<String, List<Song>> byArtist() { 
    Map<String, List<Song>> byArtist = new HashMap<>(); 
    for (Song song : mSongs) { 
     List<Song> artistSongs = byArtist.get(song.getArtist()); 
     if (artistSongs == null) { 
      artistSongs = new ArrayList<>(); 
      byArtist.put(song.getArtist(), artistSongs); 
     } 
     artistSongs.add(song); 
    } 
    return byArtist; 
} 

コードが正常に動作しますが、私は理解していない部分は、我々は唯一のアーティストを追加する場合は地図byArtistが更新されていると、曲が使用している方法ですメソッドをifの状態にして、artistSongs変数の新しいインスタンスを作成する場合は、他のインスタンスはどのようにどこに格納されていますか?

+1

にリストインスタンスのすべてのメソッドが作成するマップに格納されているを変更する必要があります。何があなたにはっきりしていませんか? –

+0

あなたは歌のリスト(msongs)に行きます。 アーティストが現在のマップ(byArtist)に存在しない場合は、新しい曲のリストを作成し、そのペアをbyArtist Mapに配置します。 それ以外の場合は、現在の既存の曲リスト(参考にして地図にある)に曲を入れるだけです。 –

+0

@Mick - あなたのコメントとBerlyeyのコメントを組み合わせた後に意味があります。速やかなご返信ありがとうございます。 –

答えて

1

各曲にアーティストが付いており、曲を繰り返したり、アーティスト名に曲を追加することで、特定の曲のアーティストを見つけたり、特定のアーティストによる曲を見つけることができます。さらに重要なことは、あなたの

Map<String, List<Song>> byArtist = new HashMap<>(); 

​​
関連する問題