Из wikipedia :
В компьютерном программировании происходит переполнение целых чисел, когда арифметическая операция пытается создать числовое значение, которое больше, чем может быть представлено в пределах доступное пространство для хранения. Например, добавление 1 к наибольшему значению, которое может быть представлено, представляет собой целочисленное переполнение. Наиболее общий результат в этих случаях заключается в том, что наименее значимые представляемые биты результата должны быть сохранены (результат считается завершенным).
blockquote>Вы должны заботиться об этом, особенно при выборе подходящего типы данных для вашей программы, или вы можете получить очень тонкие ошибки.
Проблема может возникнуть из-за того, что отношения не установлены в экземпляре компании.
Не могли бы вы попытаться добавить человека в корпоративный эфир, позвонив c.getPersons().add(p1.getName(), p1)
или изменив метод setcompany(...)
на
public void setcompany(Company c) {
c.getPersons().add(this.getName(), this)
this.company = c;
}