我想生成唯一的字符串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元素已经进行了检查。

使用add中的the return value来查看ID是否已经在Set中:

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


编辑:看看上面的Andreas的评论,这甚至更好。

10-06 09:01