有什么想法为什么我无法put
进入此HashMap?
public class UserImpl implements User{
HashMap<String, Double> videoRecords = new HashMap<>();
@Override
public void updateVideoRecord(String currentVideo, double seconds) {
videoRecords.put(currentVideo, seconds);
}
}
IntelliJ的调试器显示currentVideo
和seconds
都在传递值,但是HashMap videoRecords
不会更新。这是我用来检测HashMap的不接受值的方法:
@Override
public void updateVideoRecord(String currentVideo, double seconds) {
System.out.println(this.videoRecords);
this.videoRecords.put(currentVideo, seconds);
System.out.println(this.videoRecords);
}
有趣的是,如果我在此方法中初始化一个HashMap,则将值成功放入其中。
答案 0 :(得分:1)
如果您可以添加运行器代码或至少添加main()
方法,那将有所帮助。无论如何,我试图重现您的问题,但似乎没有任何问题。
在这里,我像您一样使用类UserImpl
的相同实现,只是添加了一个get方法,该方法将映射返回到main
方法:
import java.util.*;
import java.util.HashMap;
public class UserImpl implements User {
HashMap<String, Double> videoRecords = new HashMap<>();
@Override
public void updateVideoRecord(String currentVideo, double seconds) {
videoRecords.put(currentVideo, seconds);
}
public HashMap<String, Double> getRecords() {
return videoRecords;
}
}
这是通过“模拟”界面实现的,因为在您的实现中,您将覆盖方法updateVideoRecord()
。
很明显,在Main
中,我创建了一个UserImpl
类的对象,将新条目放入HashMap,并在放置之前和之后进行打印。
import java.util.*;
public class Main {
public static void main(String[] args) {
UserImpl userImpl = new UserImpl();
HashMap<String, Double> records = userImpl.getRecords();
System.out.println("The size of the map is " + records.size());
System.out.println("Initial Mappings are: " + records);
userImpl.updateVideoRecord("theCurrentVideo", 360);
System.out.println("The size of the map is " + records.size());
System.out.println("Initial Mappings are: " + records);
}
}
最后,在这里您可以看到输出看起来完全符合要求,所以我看不到您的问题。因此,如果您可以详细说明您的问题,也许我会有所帮助。如果没有,那么我希望这可以帮助您解决问题。
kareem@Kareems-MBP:Desktop$ javac Main.java
kareem@Kareems-MBP:Desktop$ java Main
The size of the map is 0
Initial Mappings are: {}
The size of the map is 1
Initial Mappings are: {theCurrentVideo=360.0}
答案 1 :(得分:0)
感谢您的帖子。我已经尝试调试了好几个小时,根据您的回答,没有理由认为该代码无法正常工作。你是对的。
我正在尝试扩展别人的现有代码,这是导致我的代码无法正常工作的原因。 HashMap videoRecords
正在Serialized
到文件中,但是在此过程中,一种toString()
方法正在擦除文件中的所有记录。
花了我几个小时才解决...
@Kareem Jeiroudi:感谢您为我指明了正确的方向。