Я застрял, я не знаю, как это сделать.Доступный Следующий ID
Я хочу получить следующий доступный идентификатор. Если есть [ID:1,ID:2,ID:3]
, findId()
вернет 4
(следующий доступный идентификатор).
Если ID:2
удален, мы получаем [ID:1,ID:3]
, поэтому теперь он должен вернуть 2
.
Любая помощь, пожалуйста!
public int findId() {
if (getAreas().isEmpty())
return 1;
List<Area> areas = new ArrayList<>(getAreas());
areas.sort(Comparator.comparingInt(AutoPayArea::getId));
for (int i = 1; i <= areas.size(); i++) {
if (i < areas.get(i - 1).getId()) {
return i;
} else {
return i + 1;
}
}
return -1;
}
Обычно нет смысла хранить идентификаторы последовательно. По мере того как ваш вопрос будет изменяться, в любом случае все равно будут дыры в вашей идентификационной последовательности. И у современных компьютеров достаточно памяти для работы с большими типами nunber, так что нет необходимости ограничивать их длины. Кроме того, повторное использование идентификаторов может иметь эффект seide, когда они сохраняются в базе данных или около того. Поэтому вам не следует настраивать время процессора компьютера только для гомеопатического улучшения ... –
следующий идентификатор, следующий ID не принят – Max604
Как это сделать @TimothyTruckle – Max604