[英]Java stream map create objects with counter
我是Java及其流功能的新手。 如何使用流而不是循環實現此循環功能:
List<PackageData> packages = new ArrayList<>();
for(int i = 0; i < 100; i++) {
PackageData packageData = ImmutablePackageData.builder()
.withPackageGroup("ConstantString")
.withPackageType("ConstantString")
.withTrackingId("ConstantString" + i.toString())
.withLocationId("ConstantString" + i.toString())
.build();
packages.add(packageData);
}
你可以使用IntStream
;
List<PackageData> packages = IntStream.range(0, 100)
.mapToObj(i -> ImmutablePackageData.builder()
.withPackageGroup("ConstantString")
.withPackageType("ConstantString")
.withTrackingId("ConstantString" + i)
.withLocationId("ConstantString" + i)
.build())
.collect(Collectors.toList())
因為你的流只依賴於整數范圍[0, 100)
從jdk-9開始,您還可以使用stream.iterate()生成順序流
static <T> Stream<T> iterate(T seed,
Predicate<? super T> hasNext,
UnaryOperator<T> next)
例
List<PackageData> packages = Stream.iterate(0, i->i<100, i->i+1)
.map(i-> -> ImmutablePackageData.builder()
.withPackageGroup("ConstantString")
.withPackageType("ConstantString")
.withTrackingId("ConstantString" + i)
.withLocationId("ConstantString" + i)
.build())
.collect(Collectors.toList())
List<PackageData> packages = Stream.iterate(0, (index) -> ImmutablePackageData.builder()
.withPackageGroup("ConstantString")
.withPackageType("ConstantString")
.withTrackingId("ConstantString" + index)
.withLocationId("ConstantString" + index)
.build())
.limit(100)
.collect(Collectors.toList());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.