HashMap字段不会更新

时间:2016-10-07 07:56:49

标签: java arraylist enums hashmap

在我的java项目中,我有一个私有的HashMap字段(eggs是一个枚举,bacon是一个具有ArrayList字段的对象)。所以它就像:

    class Foo {
       private HashMap<Eggs, Bacon> breakfast;

       foo() {
         this.breakfast = new HashMap<Eggs, Bacon>();}

       void setValues(int x) {
          ArrayList<Integer> temp;
          Bacon b;
          for(int i = 0; i < x; i++) {
             temp.add(i);}
          b = new Bacon(temp);
          this.breakfast.put(Eggs.Scrambled, b);}
    }

基本上,即使我确保在我的testClass中首先调用setValues,对morning.get()或breakfast.size()的调用也总是会导致NullPointerException。在我的实际代码中,我有几个枚举对象for循环中的映射。使用调试器,我发现值已设置但在每个​​循环结束时立即消失。我不知道为什么我的HashMap字段没有保存放入它的值。即使我将字段更改为ArrayList并设置或添加值,我仍然会得到相同的nullpointer / outofbounds异常

如果需要,我可以发布我的实际代码,但我想知道是否有人对此有任何见解。我在我的智慧结束

2 个答案:

答案 0 :(得分:0)

您声明了ArrayList<Integer> temp而没有为其指定值。

List<Integer> temp = new ArrayList<>();

此外有很多代码味道,你应该尝试遵循编码标准(我更喜欢谷歌的)并尝试重新考虑你的设计;构造函数可能完全删除列表会有所帮助,但是如果不知道实际的问题/代码,我们就无法真正知道。

答案 1 :(得分:0)

你需要初始化你的ArrayList,这就是造成空指针异常的原因。

另一件事,如果你使用枚举作为地图的关键从我的意见错误,HashMap将采取体面的空间,而你有限的键我不建议使用地图,而你可以使用培根数组和定义枚举中每个条目的索引,并使用它访问Bacons。