首页 > 解决方案 > Simplify unique String check in a Set

问题描述

I wanna generate unique String Ids until it is unique.

My approach is:

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

My question: is there a better way to implement this?

标签: javasetuniquecontains

解决方案


Set 的主要目的是保证没有重复的元素。add一个元素已经检查过了。

使用的返回值add查看 id 是否已经在Set:

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

编辑:看看上面安德烈亚斯的评论,这更好。


推荐阅读