哈希集没有它应该有的值。实例化问题
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);
}
}
嘿,我想我有一些逻辑问题,但我真的看不出它在哪里。 我知道问题出在 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);
}
}