我正在从文件中读取100万行数据,其中包含给定格式FILE DATA IMAGE的电影数据。
MovieDetails文件包含简单的获取和设置功能
问题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
答案 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)