Упростите уникальную проверку строки в наборе - PullRequest
0 голосов
/ 11 февраля 2020

Я хочу генерировать уникальные строковые идентификаторы, пока они не станут уникальными.

Мой подход таков:

private Set<String> uniqueIdSet = new HashSet<>();
...

 boolean contains = uniqueIdSet.contains(getRandomId());
    while (contains){
      var randomId = getRandomId();
      contains = uniqueIdSet.contains(randomId);
      if (!contains){
        uniqueIdSet.add(randomId);
      }
    }

Мой вопрос: есть ли лучший способ реализовать это?

1 Ответ

4 голосов
/ 11 февраля 2020

Основная цель Set - гарантировать отсутствие дублирующих элементов. add элемент уже проверяет это.

Используйте возвращаемое значение из add, чтобы увидеть, был ли идентификатор уже в Set:

String randomId = getRandomId();
while (!uniqueIdSet.add(randomId)) {
  randomId = getRandomId();
}

РЕДАКТИРОВАТЬ: Посмотрите на комментарий Андреаса выше, что еще лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...