【发布时间】:2017-12-11 19:27:57
【问题描述】:
我正在从包含给定格式 FILE DATA IMAGE 的电影数据的文件中读取 100 万行数据。
MovieDetails 文件包含简单的 get 和 set 函数
问题 1 我想打印 hashmap 的数据,好像普通方法在这里行不通,我也想打印多个值(movieTitle 和 Genres)。
问题 2 基本上,当我在哈希表中放入 100 万条记录时,它会放入所有键,但每个键都包含相同的值,即最后一个(参见文件数据图像),当我调试它时,它显示 3952(键和值)但在输出中我只得到 1422 但在覆盖我的类 toString() 后它显示我 1539(键和值)。NEW OUTPUT AFTER OVERRIDING 请查看输出图像OUTPUT 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
【问题讨论】:
-
MovieDetails 类需要重写 toString() 方法。现在它使用默认值。让它输出你想要的。
-
酷,在覆盖它 toString() 之后,我的第二个问题仍然存在帮助我解决这个问题(我已经用图像更新了它)
-
我需要查看您的 MovieDetails 课程。尤其是 toString() 方法。
标签: java file bufferedreader