您的位置 首页 java

七爪源码:如何在 Java 中生成模拟数据

使用 Java 流生成无限数据序列

七爪源码:如何在 Java 中生成模拟数据

介绍

在本文中,我们将使用 Java Streams API 生成模拟数据

想法是使用 Stream generator() 方法,然后使用它来生成自定义数据类型,例如 emailID。

生成无限序列的 UUID

Streams API 提供了获取供应商对象的生成方法。 供应商是一个不接受输入但返回输出的功能接口。

所以我们可以构建任何逻辑作为函数参数并传递给生成方法。

在下面的示例中,我们将 UUID 实例生成为无限序列。

  private   static   void  streamGenerate(){
     Supplier<UUID> supplier = () -> UUID. random UUID();
     Stream<UUID> generate = Stream.generate(supplier);
     generate.forEach(a-> System.out.println(a));
}  

生成无限序列的消息

我们可以使用上述逻辑来实现自定义逻辑来生成任何对象。

让我们考虑一个案例,我们正在构建一个 PubSub 消息发布者客户端,并且我们想要模拟生成客户端需要发布的无限消息序列。

我们可以轻松地扩展流生成器逻辑来构建它。 下面是我们的消息 POJO ,它采用消息 ID 和消息本身。

    static class Message{
       int id;
       String message;

       public Message(int id,  String  message) {
           this.id = id;
           this.message = message;
       }

       @Override
       public String toString() {
           return "Message{" +
                   "id=" + id +
                   ", message='" + message + ''' +
                   '}';
       }
   }  

下面我们定义了返回 Message 对象的供应商。

我们再次使用 Stream 生成器生成无限序列的 Message 对象并打印它。

  private static void streamMessage(){
        AtomicInteger atomicInteger = new AtomicInteger();
        Supplier<Message> supplier = () -> {
            Message message = new Message(new Random().nextInt(), "Message : "+atomicInteger.getAndIncrement());
            return message;
        };

        Stream.generate(supplier)
                .forEach(a-> System.out.println("Message Published: " +a.toString()));
    }  

生成模拟 emailID 数据

在下面的示例中,我们将使用流生成器来生成模拟 emailID 数据。

我们已经创建了我们希望在 emailId 中看到的电子邮件域列表。

我们构建 Supplier 实例,该实例首先生成随机用户名,然后与从我们的域列表中挑选的随机域连接。

一旦我们准备好供应商实例,我们就可以调用此方法并提供大小作为我们需要的 emailId 的数量。

     private static void streamMailId(long size) {
       List<String> domain = List.of("@gmail.com", "@Yahoo.com", "@outlook.com");

       Supplier<String> supplier = () ->{
           String userName = generateUserName();
           Random random = new Random();
           int index = random.nextInt(domain.size());
           return userName+domain.get(index);
       };

       Stream.generate(supplier).limit(size).forEach(a-> System.out.println(a));
    }  

下面是生成随机用户名的代码。 逻辑是只选择随机字符并附加为用户名定义的长度数。

     private static String generateUserName() {
       String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
       Random random = new Random();
        StringBuilder  userName = new StringBuilder();
       for(int i=0;i<10;i++){
           userName.append(chars.charAt(random.nextInt(chars.length())));
       }
       return userName.toString();
    }  

一旦我们执行我们的客户端代码,我们将看到下面的输出。

七爪源码:如何在 Java 中生成模拟数据

因此,借助生成功能和添加自定义供应商逻辑,生成模拟数据非常容易。

结论

在本文中,我们使用 Streams api generate() 方法来生成无限的数据序列。

我们研究了自定义模拟数据实现,例如 emailId 和消息类型。

关注七爪网,获取更多APP/小程序/网站源码资源!

文章来源:智云一二三科技

文章标题:七爪源码:如何在 Java 中生成模拟数据

文章地址:https://www.zhihuclub.com/184027.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图