Я не уверен в точной причине, по которой вы получили NullPointerException
, но вы неправильно используете HashMap
.Даже если вы не выполняли итерацию по записям HashMap
, изменение ключа Map
(в вашем случае ArrayList<Integer>
) ломает HashMap
, так как оно меняет hashCode()
ключа уже в Map
(что означает, что ключ может храниться в сегменте, который не соответствует его новому hashCode()
).
Это, вероятно, сломало код итератора и вызвало NullPointerException
,Вы не должны мутировать ключи HashMap
.Если вы не перебираете записи, вы могли бы удалить запись из Map
, преобразовать ключ в ключ и вернуть ее обратно в Map
, но это не разрешено при переборе Map
.
PS, вместо использования необработанных Iterator
и Map.Entry
, которые требуют приведения позже, используйте:
Iterator<Map.Entry<ArrayList<Integer>,miniSquare>> it = mp.entrySet().iterator();
и
Map.Entry<ArrayList<Integer>,miniSquare> pair = it.next();
Это не решит вашу проблемуисключение, но это хорошая практика.