Я не могу полностью понять, как потоки работают на Java. Можете ли вы создать абстрактный тип данных, например MyArrayList, и использовать поток на нем каким-то образом?Java, использующий потоки на абстрактных типах данных?
Что-то вроде:
MyDataType<MyClass> myList = new MyDataType<>();
myList.stream()
.filter...and.so.on
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()
С этим, я теряю некоторые операции и мой способ их реализации, но, по крайней мере, я могу использовать потоки и фильтрацию ...
'Stream' является интерфейсом. 'Collection' - еще один интерфейс. –
И ArrayList является конкретным, а не абстрактным. Возможно, вам лучше объяснить более подробно то, что мотивирует этот вопрос. Что вы пытаетесь сделать в целом (а не как вы это делаете)? –
Я имел в виду сделать свой собственный тип данных под названием ArrayList. Я только сделал это более запутанным с этим примером. Могу ли я использовать потоки в моей переменной myList из фрагмента кода? – Mocktheduck