java - 创建一个自定义的类 IntStream 类

标签 java java-8 java-stream

在 Java 8 中,您可以编写如下代码:

List<Integer> list = IntStream
    .range(0, 100)
    .boxed()
    .collect(Collectors.toCollection(ArrayList::new));

如何创建自定义 XStream 类?例如,假设我有一个自然可以排序的类,你自然可以有一个对象的前驱和后继。喜欢:

public class PurchaseOrder {
    public long orderNumber;

    public PurchaseOrder(){
        orderNumber = 0L;
    }
}

然后,我可以有一个理论上的 PurchaseOrderStream,您可以为其编写以下代码:

List<PurchaseOrder> list = PurchaseOrderStream
    .range(0, 100)
    .collect(Collectors.toCollection(ArrayList::new));

我该怎么做呢?是否有任何类或接口(interface)需要 PurchaseOrderStreamextend/implement?我不是在寻找完整的源代码(尽管那会很好),而只是朝着正确的方向前进。

最佳答案

最简单的方法就是使用现有的方法。我看不出有任何理由在这里重新发明轮子。

例如,如果您编写了一个静态方法PurchaseOrder getFromId(long id),您可以这样做

LongStream.range(0, 100).mapToObj(PurchaseOrder::getFromId)
                        .collect(Collectors.toCollection(ArrayList::new));

如果这还不够短,你可以写一个方法

public static Stream<PurchaseOrder> range(long low, long high) {
    return LongStream.range(low, high).mapToObj(PurchaseOrder::getFromId);
}

然后你可以写

PurchaseOrder.range(0, 100).collect(Collectors.toCollection(ArrayList::new));

关于java - 创建一个自定义的类 IntStream 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33026473/

相关文章:

java - 尝试使用 FileWriter 写入输出文件

java - 当用户在Java中输入数组大小时,如何生成从0到100的随机数而不重复?

java - Android Spinner 不适用于搭载 Android 5.0 的三星设备

java - pretty-print XML 文件

java - Java 8 支持 TLS 1.2 但 Java 7 不支持

java - 如何使用 Java 流在集合中找到最小的 BigDecimal 字段?

Java 在一个窗口大小的周期内进行计数(例如 size=3)

Javafx 从 jar 加载图像

java - 将 Java List 转换为 Pivot 格式

java - 我可以将一个流分成多个较小的流吗