将值放入 BidiMap 时出现空指针

Null-Pointer when putting values in BidiMap

我正在尝试做一个任务:你有 100 扇门,一排。您经过门 100 次。第一次通过时,您访问每扇门并切换门(如果门关闭,您打开它;如果它打开,您关闭它)。第二次你只访问每 2 扇门(门#2、#4、#6,...)。第三次,每第 3 扇门(#3、#6、#9、...),等等,直到您只访问第 100 扇门。

问题:在映射中放置键和值时出现空点异常。

代码如下:

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);
                   }
               }
        }
    }

您需要初始化doors:

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

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

看看这个link