Я пытаюсь создать новый уникальный идентификатор для каждого объекта в классе, не используя поле static nextID
, чтобы просто увеличивать. Использование этого будет создавать сложности при разгрузке и разгрузке программы.Создать уникальный идентификатор объекта
Я придумал решение, чтобы пройти через объекты в статическом методе, проверяя их все, но по какой-то неизвестной причине для меня он не выйдет из цикла while.
Я тестировал его на ideone.com here, пытаясь создать 5 объектов для начала, хотя он даже не создаст его.
Не имея необходимости перейти к ссылке, чтобы просмотреть весь тестовый код, ниже приведен метод, который я использую.
public static int newRandomID() {
int randomID = 0;
boolean notUnique = true;
while (notUnique) {
randomID = (int) (Math.random() * 999999 + 1);
for (Example e : examples) {
if (e.ID == randomID) {
notUnique = true;
break;
}
notUnique = false;
}
}
return randomID;
}
ли я только что сделал глупую ошибку, что я слишком слеп, чтобы видеть, или есть причина того, что это не работает?
Несколько общих указателей: 1) Не делайте имена более сложными, чем они должны быть. Измените 'notUnique' только на' unique' и используйте '! Unique', где вы имеете в виду« не 'уникальный'». 2) Используйте 'java.util.Random' для генерации целого числа с верхним пределом. 3) Поместите логику сдерживания в отдельный метод. Ваша ошибка будет ясной, и ваша программа может быть выражена как 'while (idExisists (randomID)) randomID = rnd.nextInt (99999);'. – aioobe