在Hashtable中打印多值数据

时间:2017-12-11 19:27:58

标签: java file bufferedreader

  

我正在从文件中读取100万行数据,其中包含给定格式FILE DATA IMAGE的电影数据。

MovieDetails文件包含简单的获取和设置功能

问题1 我想打印hashmap的数据,看起来普通的方法在这里不起作用,我想打印多个值(movieTitle和Genres)。

问题2    基本上当我在哈希表中放入100万条记录然后它放入所有键但每个键包含相同的值,这是最后一个(参见文件数据图像),当我调试它然后它显示我3952(键和但是在输出中我得到的只是1422但是在重写了我的类toString()之后它显示了1539(键和值)。NEW OUTPUT AFTER OVERRIDING 请查看输出图像OUTPUT IMAGE

MoviesTable DEBUG data Image

请告诉我为什么我会遇到这些错误以及我如何纠正错误 谢谢

 MovieDetails mb = new MovieDetails();
        Hashtable<Integer, MovieDetails> moviesTable=new Hashtable<Integer, MovieDetails>();
        try {

            String contentLine;

            br = new BufferedReader(new FileReader("C:/Users/hp/Desktop/movies.dat"));

            while ((contentLine = br.readLine()) != null) {

                mb.setMovieID(Integer.valueOf(contentLine.split("::")[0]));
                mb.setTitle(contentLine.split("::")[1]);
                mb.setGenres(contentLine.split("::")[2]);
                moviesTable.put(mb.getMovieID(), mb);
            }

            for (Entry<Integer, MovieBean> entry : moviesTable.entrySet()) {
                Integer key = entry.getKey();
                MovieBean value = entry.getValue();

                System.out.println ("Key: " + key + " Value: " + value);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)br.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }


**OUTPUT IMAGE**
  [1]: https://i.stack.imgur.com/OZi4e.jpg

1 个答案:

答案 0 :(得分:2)

您的MovieDetails toString方法应该类似于:

public String toString() {
       return( "" + getTitle() + " " + getGenres() );
}

同时移动:

MovieDetails mb = new MovieDetails();

 while ((contentLine = br.readLine()) != null) {
      MovieDetails mb = new MovieDetails();
  (then rest of loop)