简化集合中的唯一字符串检查

Simplify unique String check in a Set

我想生成唯一的字符串 ID,直到它是唯一的。

我的做法是:

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);
      }
    }

我的问题:有没有更好的方法来实现这个?

Set的主要作用是保证不存在重复元素。 add对一个元素进行检查。

使用addthe return value查看id是否已经在Set:

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

编辑:看看上面 Andreas 的评论,它更好。