Я пытаюсь выполнить задачу, где: У вас есть 100 дверей подряд. Вы делаете 100 проходов у дверей. В первый раз вы посещаете каждую дверь и переключаете дверь (если дверь закрыта, вы ее открываете, если она открыта, вы ее закрываете). Во второй раз вы посещаете только каждую вторую дверь (дверь № 2, № 4, № 6, ...). В третий раз, каждая 3-я дверь (дверь № 3, №6, №9, ...) и т. Д., Пока вы не посетите только 100-ю дверь.Null-Pointer при установке значений в BidiMap
Проблема: при установке ключей и значений на карте я получаю исключение нулевой точки.
Вот код:
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);
}
}
}
}
У меня было, но BidiMap - это абстрактная карта. Если вы знаете, что это такое, поделитесь :) – user8
Вы посмотрели на [javadoc] (https://commons.apache.org/proper/commons-collections/javadocs/api-3.2.1/org/apache/commons/ коллекции/BidiMap.html) для известных классов реализации? –
Да, там он сглажен через DualHashBidiMap(), который мой JE говорит, что он не существует – user8