Java 将值放入BidiMap时的空指针

Java 将值放入BidiMap时的空指针,java,dictionary,nullpointerexception,apache-commons,Java,Dictionary,Nullpointerexception,Apache Commons,我试图做一个任务:你有100门在一排。你从门口经过100次。第一次通过时,您访问每个门并切换门(如果门关闭,则打开它;如果门打开,则关闭它)。第二次,您只需每隔2个门(门2、门4、门6等)访问一次。第三次,每隔第三扇门(第三、六、九扇门)等,直到你只参观第一百扇门 问题:当把键和值放到映射中时,我得到一个空点异常 代码如下: import org.apache.commons.collections4.*; public class Doors_100 { private Bidi

我试图做一个任务:你有100门在一排。你从门口经过100次。第一次通过时,您访问每个门并切换门(如果门关闭,则打开它;如果门打开,则关闭它)。第二次,您只需每隔2个门(门2、门4、门6等)访问一次。第三次,每隔第三扇门(第三、六、九扇门)等,直到你只参观第一百扇门

问题:当把键和值放到映射中时,我得到一个空点异常

代码如下:

import org.apache.commons.collections4.*;

public class Doors_100
 {

    private BidiMap<Integer, Boolean> doors;
    Random r = new Random();
    public Doors_100()
    {
        for(int i = 1; i < 101; i++){
            doors.put(Integer.valueOf(i), r.nextBoolean()); //here is the null-pointer
        }
    }

    public void toggleDoors() { 
        for(int i = 1; i < 101; i++){
                   for(boolean value : doors.values()){
                       if(doors.getKey(value) % i == 0){
                       doors.get(value);
                       value ^= true;
                       System.out.println("Key: " + doors.getKey(value) + " Value: " + doors.get(value)
                   + " at " + i);
                   }
               }
        }
    }
import org.apache.commons.collections4.*;
公共级门(100)
{
私人门;
随机r=新随机();
公共门(100)
{
对于(int i=1;i<101;i++){
doors.put(Integer.valueOf(i),r.nextBoolean());//这是空指针
}
}
public void toggleDoors(){
对于(int i=1;i<101;i++){
for(布尔值:doors.values()){
if(doors.getKey(值)%i==0){
门。获取(值);
值^=真;
System.out.println(“Key:+doors.getKey(value)+”value:+doors.get(value)
+“at”+i);
}
}
}
}

您需要初始化

private BidiMap<Integer, Boolean> doors = new SomethingImplementingBidiMap<>();
private BidiMap doors=new something实现BidiMap();

BidiMap
是一个接口。
使用实现它的类(如
TreeBidiMap


看看这个。

我有,但BidiMap是一个抽象映射。如果你知道这是什么,请分享:)你看过已知实现类的实现方法吗?是的,它是通过DualHashBidiMap()实现的,我的JE说它不存在