Java 填充HashMaps<;对象、集合<;对象>&燃气轮机;

Java 填充HashMaps<;对象、集合<;对象>&燃气轮机;,java,collections,hashmap,last.fm,Java,Collections,Hashmap,Last.fm,我在填写Hashmap时遇到了一个问题。 每次我想要填充HashMap(在本例中是集合)的值部分时,我的对象(需要添加到集合中)只接受对象的最后一个接收值。 例如,我的代码如下(使用LastFM API): Map tracksTags=newhashmap(); Collection trackSet=tracks.getPageResults(); 集合标记=新的HashSet(); 弦乐艺术家=”; 字符串trackTitle=“”; int计数器=0; 用于(轨道:轨道集){ tags.

我在填写
Hashmap
时遇到了一个问题。 每次我想要填充HashMap(在本例中是集合)的值部分时,我的对象(需要添加到集合中)只接受对象的最后一个接收值。 例如,我的代码如下(使用LastFM API):

Map tracksTags=newhashmap();
Collection trackSet=tracks.getPageResults();
集合标记=新的HashSet();
弦乐艺术家=”;
字符串trackTitle=“”;
int计数器=0;
用于(轨道:轨道集){
tags.clear();
artist=track.getArtist();
trackTitle=track.getName();
集合标记列表=Track.getTopTags(艺术家、trackTitle、,
阿皮奇);
用于(标记:标记列表){

如果(计数器所有曲目共享同一个内部
哈希集
实例。
因此,循环顶部的
tags.clear()
和填充集合的内部循环会影响所有轨迹


您需要为循环中的每个曲目创建一个
new HashSet()

您的第一行是一个错误。哦,当然……在我的代码中它写的是正确的!将尽快编辑。这对我来说是一个严重的错误。而不是标记。清除我写的标记=新HashSet…谢谢!
Map<Object, Collection<Tag>> tracksTags = new HashMap<Track, Collection<Tag>>();
Collection<Track> trackSet = tracks.getPageResults();
Collection<Tag> tags  = new HashSet<Tag>();

String artist = "";
String trackTitle = "";

int counter = 0;

for (Track track : trackSet) {
    tags.clear();

    artist = track.getArtist();
    trackTitle = track.getName();

    Collection<Tag> tagList = Track.getTopTags(artist, trackTitle,
                apiKey);

    for (Tag tag : tagList) {
            if (counter <= 9) {

                counter++;

                System.out.println(trackTitle + " " + tag.getName() + " "
                        + tag.getCount());
                tags.add(tag);

            } else
                break;
    }
    counter = 0;

    tracksTags.put(track, tags);


}