从自定义数据结构类返回流

时间:2016-08-15 22:29:25

标签: java generics interface linked-list java-stream

我正在开发一个创建自定义LinkedList泛型类的程序,我希望能够通过在对象上调用stream()来从中生成流。我查看了文档,并没有找到任何可以帮助我做到这一点的东西,比如实现的接口(类似......可迭代,比较,可比)。我正在考虑创建一个流方法,该方法返回一个带有Arrays.stream的流,来自通过遍历链表并分配元素生成的数组。这没关系,这个泛型类我想让它的参数约束到两个没有继承关系的类。有点像<人或外侨>可以做到这一点

1 个答案:

答案 0 :(得分:0)

我假设你的自定义LinkedList类有一个iterator()方法。我还假设它有一个恒定的时间size()方法。做出这些假设,您可以使用以下代码实现stream()方法:

public Stream<T> stream() {
    Iterator<T> it = iterator();
    int characteristics = 0;  // see characteristics docs in [Spliterator][1]
    Spliterator<T> spliterator = Spliterators.spliterator(it, size(), charactistics);  // see [Spliterators][2]
    return StreamSupport.stream(spliterator, false);  // see [StreamSupport][3]
}