簡體   English   中英

如何在Scala中生成很多唯一的隨機字符串

[英]How to generate a lot of unique random strings in Scala

我想生成很多隨機字符串,它們相互之間是唯一的,並且在MySQL中是唯一的,並指定了生成的數量,例如10,000。

我可以確保每次生成的字符串中的字符串都是唯一的,只需檢查List[String]是否在每次生成的字符串中都包含該字符串。
但是我不知道如何確保它在MySQL中是唯一的,我已經在MySQL中設置了唯一索引,例如ALTER TABLE Code ADD UNIQUE INDEX `codeUnique` (`code`);

但是,如果唯一的保證是將數據插入MySQL時,插入將失敗。
而且,如果在每次插入時都檢查插入失敗,那么當生成的數量很大時,生成將花費很長時間。

使用List.fillrandomUUID作為@Sudhir注釋:

scala> List.fill(10000)(java.util.UUID.randomUUID.toString)
res0: List[String] = List(
  3c789851-975c-499d-8b0b-5bc60dee7497, 
  9511fb41-a42e-47d8-a5f3-ba1a6f3847f2,
  61263421-59de-4538-87c6-eb98ccf1e19d, 
 ...)

您可以通過將其轉換為集合並檢查大小來再次檢查它們的唯一性:

scala> List.fill(10000)(randomUUID.toString).toSet.size
res1: Int = 10000

您可以簡單地使用Java的java.util.UUID.randomUUID.toString方法來獲取唯一的String 在這里查看文檔。 使用此方法獲得重復密鑰的機會非常低(我從未獲得重復密鑰)。 因此,您也不必維護集合。

如果要使用自己的隨機密鑰生成器並確保其唯一性,則不要使用List[String]因為List可能有重復項,並且為了檢查密鑰是否已存在,需要遍歷每個元素,是一項昂貴的操作。 您應該改用Set[String] ,然后使用Setcontains()方法檢查密鑰是否已經存在。

循環遍歷10000個整數,取每個數字的MD5或SHA1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM