如何找到不同的流派,然后添加到排列的链表中



我试图从一个电影文件中获取类型,然后检查类型是否相同。因此,如果文件中有相同类型的电影,它们应该存储在相同的链表数组中。

我需要检查类型的哈希代码,然后找出文件中是否有其他电影对类型相同的哈希代码进行了哈希处理,然后将该特定类型放在链接列表中。所以到目前为止,基本上我已经有了这个,我还有一个链接列表类等,并且没有使用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);
        }

      }
}

这就是我到目前为止所拥有的。我已经在文件中阅读了,现在我想检查文件中的流派(字符串)是否相同,然后将该流派添加到链接列表中。我该怎么做?

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);
}

您需要一个从类型字符串映射到电影列表的映射:

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等)。例如

HashMap<String, Movies> genres ... ;
...
genres.put(g, movie);

将覆盖您以前为该类型设置的任何电影值。

但是,由于在运行时无法知道该流派是否已经存在于Map中,因此必须为未知流派添加一个新的(空)列表。任何具有该类型的电影现在都可以添加到该列表中。

相关内容

  • 没有找到相关文章

最新更新