gpt4 book ai didi

java - 使用 Java Faker 生成唯一的随机邮政编码

转载 作者:行者123 更新时间:2023-12-04 13:10:02 24 4
gpt4 key购买 nike

我正在使用 Java Faker并想生成一系列独特的随机邮政编码。 Python 和 Ruby 支持 unique 关键字。但我不知道如何在 Java 中完成这项工作。是否支持此功能?

Java 代码如下:

// Not guaranteed to be unique
String zipCode = faker.address().zipCode()

Python example :

import faker
fake = faker.Faker()
number = fake.unique.random_int()

Ruby example :

# This will return a unique name every time it is called
Faker::Name.unique.name

最佳答案

使用 Stream.generate()是产生值(value)的好方法。要使用它,定义一个 Supplier将提供源值的 lambda。在这种情况下,邮政编码。

var zipCodesStream = Stream.generate(() -> faker.address().zipCode());

使用distinct()使值独一无二。

var zipCodesStream = Stream.generate(() -> faker.address().zipCode())
.distinct();

可以使用 limit 获取任意数量的值.

var zipCodes = zipCodesStream
.limit(10_000)
.collect(Collectors.toList());

请确保使用limit,否则它将永远不会停止收集。另请注意,如果源没有足够的不同值,则该过程将挂起!

有关更强大的实现,请参阅 Kotlin's Sequences .


完整 (jdk11) 示例:

import com.github.javafaker.Faker;
import java.util.Set;
import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.Collectors;
import java.util.stream.Stream;

class scratch {

public static void main(String[] args) {

// use a Thread local random, just in case we're multi-threading
var random = ThreadLocalRandom.current();
// use the random in the Faker, for consistency
var faker = Faker.instance(random);

// generate a Stream - the source values are from Faker
var zipCodesStream =
Stream.generate(() -> faker.address().zipCode())
// make the generated values are distinct
.distinct();

var startMillis = System.currentTimeMillis();

// grab 10k values, put them into a list
var zipCodes = zipCodesStream
.limit(10_000)
.collect(Collectors.toList());
var elapsedMillis = System.currentTimeMillis() - startMillis;

// verify the generated values are distinct
assert zipCodes.size() == Set.copyOf(zipCodes).size()
: "Expect zipCodes has no duplicates";

System.out.println("Generated " + zipCodes.size() + " distinct zip codes in "
+ elapsedMillis + "ms");
}

}

输出:

Generated 10000 distinct zip codes in 387ms

关于java - 使用 Java Faker 生成唯一的随机邮政编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66388199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com