繁体   English   中英

如何使用Java生成1000个唯一的电子邮件ID

[英]How to generate 1000 unique email-ids using java

我的要求是在Java中生成1000个唯一的电子邮件ID。 我已经生成了随机文本,并使用for循环限制了要生成的电子邮件ID的数量。 问题是,当我执行时会生成10个电子邮件ID,但全部相同。

下面是代码和输出:

public static void main() {
    first fr = new first();
    String n = fr.genText()+"@mail.com";

    for (int i = 0; i<=9; i++) {
        System.out.println(n);
    }
}

public String genText() {
    String randomText = "abcdefghijklmnopqrstuvwxyz";
    int length = 4;
    String temp = RandomStringUtils.random(length, randomText);
    return temp;
}

输出为:

myqo@mail.com
myqo@mail.com
...
myqo@mail.com

当我执行相同的上述程序时,我会得到另一组邮件ID。 例如:代替'myqo'这将是'bfta' 但是我的要求是生成不同的唯一ID。

例如:

myqo@mail.com
bfta@mail.com
kjuy@mail.com

将您的String初始化放入for语句中:

for (int i = 0; i<=9; i++) {
    String n = fr.genText()+"@mail.com";
    System.out.println(n);
}

我想稍微重写一下您的方法:

public String generateEmail(String domain, int length) {
    return RandomStringUtils.random(length, "abcdefghijklmnopqrstuvwxyz") + "@" + domain;
}

并且可以像这样调用:

generateEmail("gmail.com", 4);

据我了解,您想要生成唯一的1000封电子邮件 ,那么您将可以通过Stream API以便捷的方式执行此操作:

Stream.generate(() -> generateEmail("gmail.com", 4))
      .limit(1000)
      .collect(Collectors.toSet())

但是问题仍然存在。 我特意收集了一个Stream<String>Set<String> (它删除重复项)以找出其size() 如您所见,大小并不总是等于1000

999
1000
997

这意味着即使在如此小的范围内,您的算法也会返回重复的值。

因此,您最好研究已经编写的Java电子邮件生成器,或者改进自己的电子邮件生成器(例如,通过添加数字,一些特殊字符,这些字符反过来会产生大量异常 )。

如果您打算使用MockNeat ,则已经实现了用于实现电子邮件字符串的功能。

范例1:

String corpEmail = mock.emails().domain("startup.io").val();
// Possible Output: tiptoplunge@startup.io

范例2:

String domsEmail = mock.emails().domains("abc.com", "corp.org").val();
// Possible Output: funjulius@corp.org

注意: mock默认的“ mock ”对象

为了保证唯一性,您可以在电子邮件地址中使用计数器:

myqo0000@mail.com
bfta0001@mail.com
kjuy0002@mail.com

如果只想坚持字母,则使用“ a”至“ z”作为数字将计数器转换为以26为基数的表示形式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM