哈希集没有它应该有的值。实例化问题

The hashset does not have the values it should have. Instantiation problem

嘿,我想我有一些逻辑问题,但我真的看不出它在哪里。 我知道问题出在 HashSet 之间,但仅此而已。

我正在使用 HashMap,键是 numberOfEpisode,值是 HashSet。 因此,如果我的数组列表中的这些动漫具有相同数量的剧集,例如 12,则将它们添加到新的 HashSet,然后添加到 HashMap。

代码

HashSet<Strings> animeNames;
for(Anime anime : animius.getListOfAnime){
    animeNames = new HashSet<>();
    for(Anime anime2 : animius.getListOfAnime){
        for(Episode episode : anime.getListOEpisode){
            for(Episode episode2 : anime2.getListOfEpisode{

                if(episode.getNumber == episode2.getNumber){
                    animeNames.add(anime.getName);
                    animius.getEpisodeAndAnimeIndex.put(episode.getNumber, animeNames)
                } 
            }
        }  
    }

}

输出

格式化后。可以说只有动漫 1 与动漫 2 有相似之处,但动漫 2 有 2 个键,一个有 12 集,另一个有 24 集。

12 ---- anime1, anime2 <--- 这是正确的

24 ---- anime1, anime2 <--- 这是错误的

预期输出

12 ----动漫1、动漫2

24 ----动漫2

尝试过的解决方案

我创建了 2 个 HashSet,一个包含 anime.getName 的值,另一个包含 anime2.getName.

我还尝试将 animeNames 和 animeNames2 的新实例以不同方式放入 for each 循环

如果我没误会你,你不需要4个嵌套的for循环。您只想检查 collection 中的每部动漫有多少集并存储。基本上按集数将动漫组合在一起。下面的代码就是这样做的。

HashMap<Integer, Set<Anime>> animeMap = new HashMap<>();
for(Anime anime : animius.getListOfAnime){

    int numberOfEpisodes = anime.getListOEpisodes().size(); 
    if (animeMap.contains(numberOfEpisodes) {
      animeMap.get(numberOfEpisodes).add(anime);
    } else {
      HashSet<Anime> animeNames = new HashSet<>();
      animeNames.add(anime);
      animeMap.put(numberOfEpisodes, animeNames);
    }

}