Java在抽象数据类型上使用流?

Java在抽象数据类型上使用流?,java,java-8,java-stream,Java,Java 8,Java Stream,我不能完全理解流在Java中是如何工作的。您能否创建一个类似MyArrayList的抽象数据类型,并以某种方式在其上使用流 比如: MyDataType<MyClass> myList = new MyDataType<>(); myList.stream() .filter...and.so.on MyDataType myList=newmydatatype(); myList.stream() .过滤器…等等 MyDataType实现java.uti

我不能完全理解流在Java中是如何工作的。您能否创建一个类似MyArrayList的抽象数据类型,并以某种方式在其上使用流

比如:

MyDataType<MyClass> myList = new MyDataType<>();
myList.stream()
      .filter...and.so.on
MyDataType myList=newmydatatype();
myList.stream()
.过滤器…等等
MyDataType实现java.util.List,但只实现某些操作(添加、删除、大小、isEmpty、toString)

是否有任何方法或我必须将我的数据类型转换为用java实现的数据类型

我目前的解决方案(实际上非常不健康): 在MyDataType中实现ToArray操作。并执行以下操作:

MyDataType<MyClass> myList = new MyDataType<>();
... loads of computation...
MyClass[] someList = myList.ToArray();
java.util.ArrayList badList = new java.util.ArrayList<>(Arrays.asList(someList));
badList.stream() 
MyDataType myList=newmydatatype();
... 计算量。。。
MyClass[]someList=myList.ToArray();
java.util.ArrayList badList=新的java.util.ArrayList(Arrays.asList(someList));
badList.stream()

这样一来,我就失去了一些操作和实现它们的方法,但至少我可以使用流和过滤…

如果您已经定义了一个自定义集合,并且希望能够从中生成流,那么最简单的方法就是实现一个流。一旦这样做了,创建一个流就很简单了

例如,如果您有一个类
Dongle
,并且实现了
DongleGroup
集合,那么您可以实现以下方法:

private Spliterator<Dongle> spliterator() {
    ...
}

public Stream<Dongle> stream() {
    return StreamSupport.stream(spliterator(), false);
}        

是一个接口<代码>集合是另一个接口。ArrayList是具体的,而不是抽象的。也许你最好更详细地解释是什么激发了这个问题。总体而言,您想做什么(而不是如何做)?我的意思是创建自己的数据类型ArrayList。我只是用那个例子把它弄得更混乱了。那么,我可以使用代码段中变量myList上的流吗?请尝试回答这些问题,以便我们了解您在做什么。如果您的数据类型实现了集合,请让它扩展AbstractCollection或AbstractList,您将继承它们的
stream()
实现。但是,如果没有更多的信息,我不知道这是否适合你的问题。这就好像你试图隐藏信息,我们不知为什么。请重新考虑并提出尽可能详细的问题。我想帮你,真的。在你提供更多细节之前,我们无法提供帮助。您具体实施了哪些列表操作?它们是如何实施的?请编辑您的问题,添加更多详细信息(可能包括
MyDataType
类的源代码的相关部分),我想这将是唯一的解决方案,尽管听起来工作量很大,但我不打算使用它。我要等到明天,看看有没有人来,如果没有,就是这个了。
myDongleGroup.stream().filter(Dongle::isRed)...