我试图从电影文件中获取流派,然后检查流派是否相同。因此,如果文件中有相同类型的电影,则应将它们存储在相同的链接列表数组中。
我需要检查类型的哈希码,然后找出文件中是否有任何其他电影散列类型的相同哈希码,然后将该特定类型放入链表。所以基本上我到目前为止,我还有一个链接列表类,而不是使用java.util
public class LoadingMovies {
private static final int size = 22;
private static HashMap<String, Movies> hash = new HashMap(size);
private static HashEntry<String, Movies> hasher = new HashEntry();
private static List<Movies> linked = new List<>();
public static void loadMovies(String filename) throws FileNotFoundException {
String split = ","; //split with comma
Scanner in = new Scanner(new File(filename));
ArrayList<String> arraylist = new ArrayList<>();
String wordIn;
Movies movie = new Movies();
while (in.hasNextLine()) {
wordIn = in.nextLine();
String splitter[] = wordIn.split(split);
String movieTitle = splitter[0];
String movieGenre = splitter[1];
String ageRating = splitter[2];
double scoreRating = Double.parseDouble(splitter[3]);
movie.setTitle(movieTitle);
movie.setGenre(movieGenre);
movie.setAgeRating(ageRating);
movie.setScoreRating(scoreRating);
//System.out.println(movie.getGenre());
arraylist.add(movie.getGenre);
// hash.find(movie.getGenre().hashCode());
// hash.insert(movie.getGenre().hashCode(), movie);
}
}
}
这是我到目前为止所拥有的。我现在已经阅读了文件,我想检查一下文件中的流派(String)是否相同,然后将该流派添加到链接列表中。我怎么能这样做?
答案 0 :(得分:1)
HashMap<String, List<Movie>>
似乎是您正在寻找的内容:
Map<String, List<Movie>> movieGenres = new HashMap<>();
while (in.hasNextLine()) {
// code you have
List<Movie> moviesInThisGenre = moviewGenres.get(genre);
if (moviesInThisGenre == null) {
moviesInThisGenre = new LinkedList<>();
movieGenres.put(genre, moviesInThisGenre);
}
moviesInThisGenre.add(movie);
}
答案 1 :(得分:1)
您需要一张从流派字符串映射到电影列表的地图:
HashMap<String, List<Movies>> genres = new Hash...
然后当你添加一个电影时:
String g = movie.getGenre();
if (!genres.containsKey(g)
genres.put(g, new ArrayList<Movies>));
genres.get(g).add(movie);
<强>解释强> HashMap存储关键对象的值,其中每个关键对象只能在地图中出现一次。因此,当您想为一个类型的String存储多个电影时,值类型应该是一个集合(List,Set等)。 e.g。
HashMap<String, Movies> genres ... ;
...
genres.put(g, movie);
将覆盖您之前为该流派所拥有的任何电影价值。
但是,由于您无法在运行时知道您的地图中是否已存在该类型,因此您必须为未知类型添加新的(空)列表。任何具有该类型的电影现在都可以添加到该列表中。