Java 将值放入BidiMap时的空指针
我试图做一个任务:你有100门在一排。你从门口经过100次。第一次通过时,您访问每个门并切换门(如果门关闭,则打开它;如果门打开,则关闭它)。第二次,您只需每隔2个门(门2、门4、门6等)访问一次。第三次,每隔第三扇门(第三、六、九扇门)等,直到你只参观第一百扇门 问题:当把键和值放到映射中时,我得到一个空点异常 代码如下: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
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说它不存在