【发布时间】:2020-05-26 16:51:40
【问题描述】:
我想生成唯一的字符串 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的主要目的是保证没有重复的元素。adding 元素已经检查过了。 -
@f1sh 那么您将如何使用默认的 Set 逻辑来实现它?试试看?
-
@DerBenniAusA
String randomId; do { randomId = getRandomId(); } while (! uniqueIdSet.add(randomId));--- 如果值已经在集合中,则add()方法返回false,即无法(再次)添加该值,所以继续生成一个值直到它返回true,即当它返回false。