在日常开发的过程中我们经常会遇到需要 mock 一些数据的场景,比如说 mock 一些接口的返回或者说 mock 一些测试消息用于队列生产者发送消息,可能很多时候我们都是使用一些固定的 case 或者一条相同的数据重复使用。今天阿粉就教大家用 Stream 去构造一些伪真实的一些数据。
Mock 任意个 UUID
首先我们通过普通写法来构造 100 个 UUID,代码如下相信大家都会写,就不多说了。
public static ListlistUUID(int size) { List list = new ArrayList<>(); for (int i = 0; i < size; i++) { UUID uuid = UUID.randomUUID(); list.add(uuid); } return list; }
下面再提供 Stream 的写法,代码如下,一行搞定
public static ListlistUUID2(int size) { return Stream.generate(UUID::randomUUID).limit(size).collect(Collectors.toList()); }
这里我们使用了 Stream 的 generate 方法,该方法接收一个 Supplier 类型的参数,Supplier 是一个功能接口,只有一个 get 方法,返回一个对象,不接收任何参数,上面我们就是通过 UUID 静态引用的方式获得一个 UUID 对象,另外我们使用 limit 方法来进行截断只获取 100 个。
Mock 消息
接下来我们再使用 Stream API 批量构造一批消息