Mic*_*ael 3 java java-8 java-stream
在Java 8中,您可以编写如下代码:
List<Integer> list = IntStream
.range(0, 100)
.boxed()
.collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)
如何创建自定义XStream类?例如,假设我有一个自然可以订购的类,你自然可以拥有一个对象的前辈和后继者.喜欢:
public class PurchaseOrder {
public long orderNumber;
public PurchaseOrder(){
orderNumber = 0L;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以有一个理论上的PurchaseOrderStream,您可以编写以下代码:
List<PurchaseOrder> list = PurchaseOrderStream
.range(0, 100)
.collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?是否有我需要的任何类或接口PurchaseOrderStream到extend/ implement?我不是在寻找完整的源代码(虽然这样会很好),但只是推动正确的方向.
最简单的方法就是使用已有的方法.我看不出有任何理由在这里重新发明轮子.
例如,如果您编写了静态方法PurchaseOrder getFromId(long id),则可以这样做
LongStream.range(0, 100).mapToObj(PurchaseOrder::getFromId)
.collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)
如果这不够短,你可以写一个方法
public static Stream<PurchaseOrder> range(long low, long high) {
return LongStream.range(low, high).mapToObj(PurchaseOrder::getFromId);
}
Run Code Online (Sandbox Code Playgroud)
然后你可以写
PurchaseOrder.range(0, 100).collect(Collectors.toCollection(ArrayList::new));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |