Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打印哈希表中的多值数据_Java_File_Bufferedreader - Fatal编程技术网

Java 打印哈希表中的多值数据

Java 打印哈希表中的多值数据,java,file,bufferedreader,Java,File,Bufferedreader,我正在从包含给定格式电影数据的文件中读取100万行数据 MovieDetails文件包含简单的获取和设置功能 问题1 我想打印hashmap的数据,看起来普通的方法在这里不起作用,我也想打印多个值(电影标题和类型) 问题2 基本上,当我在哈希表中放入一百万条记录时,它会放入所有的键,但每个键都包含上一个相同的值(参见文件数据图像),当我调试它时,它会显示3952(键和值),但在输出中,我只得到1422条,但在重写我的类toString()后,它会显示1539条(键和值)。 请检查输出图像 请向

我正在从包含给定格式电影数据的文件中读取100万行数据

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

问题1 我想打印hashmap的数据,看起来普通的方法在这里不起作用,我也想打印多个值(电影标题和类型)

问题2 基本上,当我在哈希表中放入一百万条记录时,它会放入所有的键,但每个键都包含上一个相同的值(参见文件数据图像),当我调试它时,它会显示3952(键和值),但在输出中,我只得到1422条,但在重写我的类toString()后,它会显示1539条(键和值)。 请检查输出图像

请向我解释为什么会出现这些错误,以及如何纠正这些错误 多谢各位

 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
MovieDetails mb=新的MovieDetails();
Hashtable moviesTable=新的Hashtable();
试一试{
字符串内容行;
br=新的BufferedReader(新的文件阅读器(“C:/Users/hp/Desktop/movies.dat”);
而((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(条目:moviesTable.entrySet()){
整数key=entry.getKey();
MovieBean value=entry.getValue();
System.out.println(“键:+Key+”值:+Value);
}
}捕获(IOE异常){
e、 printStackTrace();
}最后{
试一试{
如果(br!=null)br.close();
}捕获(IOEX异常){
例如printStackTrace();
}
}
**输出图像**
[1]: https://i.stack.imgur.com/OZi4e.jpg

您的MovieDetails-toString方法应该如下所示:

public String toString() {
       return( "" + getTitle() + " " + getGenres() );
}
并动议:

MovieDetails mb = new MovieDetails();


MovieDetails类需要重写toString()方法。现在它使用的是默认值。让它输出您想要的内容。很酷,在重写它之后,toString()我通过我的第二个问题获取了数据。还有,请帮我解决这个问题(我用图像更新了它),我需要查看您的MovieDetails类。特别是toString()方法。它几乎涵盖了我问题的75%,最后一个问题是我仍然得到1522个(键和值),而不是3952个。你知道吗that@SamarthSaxena我没有看到你的代码。我对你的问题进行了有根据的猜测,但是没有看到代码我无法回答。如果你需要更多帮助,请发布代码。
 while ((contentLine = br.readLine()) != null) {
      MovieDetails mb = new MovieDetails();
  (then rest of loop)