如何创建流 return 列表? (Java)
How can I make streams return lists? (Java)
我有以下列表:
ObservableList<String> Books;
我知道如果我想要排序列表我可以写
public ObservableList<String> getBooks() {
return Books;
}
现在,我的问题可能很荒谬,但是...有没有办法用流实现与上面相同的结果?像
Books
.stream()
.sorted();
然后让流 return 我有一个排序的 ObservableList?
我刚开始学习流,还不是很了解,所以我想知道这样的事情是否可行。
您需要使用 Collector
将 Stream 变回 List。如果你不关心是什么类型的List,有一个内置的收集器:
getBooks().stream().sorted().collect(Collectors.toList())
如果需要是ObservableList,需要自己发明Collector:
getBooks().stream().sorted
.collect(ObservableList::new, ObservableList::add, ObservableList::addAll);
旁注:Books
是变量的错误命名约定;使用 books
.
这确实是可能的,使用某种 Collector
s. Or even Collectors
. Assuming ObservableList
is a Collection
,您可以执行以下操作:
ObservableList<String> hereYouGo = Books.stream()
.sorted()
.collect(Collectors.toCollection(ObservableList::new));
其中 ObservableList::new
是空 ObservableList
收集器的供应商。如果这不是您的 class 的工作方式,请更改它。
如果你想就地排序列表,不需要流,你可以直接调用
Collections.sort(books);
如果你想return一个新的排序ObservableList<Book>
使用流,你可以这样做:
ObservableList<Book> sortedBooks = books.stream()
.sorted()
.collect(Collectors.toList(FXCollections::observableArrayList));
我有以下列表:
ObservableList<String> Books;
我知道如果我想要排序列表我可以写
public ObservableList<String> getBooks() {
return Books;
}
现在,我的问题可能很荒谬,但是...有没有办法用流实现与上面相同的结果?像
Books
.stream()
.sorted();
然后让流 return 我有一个排序的 ObservableList?
我刚开始学习流,还不是很了解,所以我想知道这样的事情是否可行。
您需要使用 Collector
将 Stream 变回 List。如果你不关心是什么类型的List,有一个内置的收集器:
getBooks().stream().sorted().collect(Collectors.toList())
如果需要是ObservableList,需要自己发明Collector:
getBooks().stream().sorted
.collect(ObservableList::new, ObservableList::add, ObservableList::addAll);
旁注:Books
是变量的错误命名约定;使用 books
.
这确实是可能的,使用某种 Collector
s. Or even Collectors
. Assuming ObservableList
is a Collection
,您可以执行以下操作:
ObservableList<String> hereYouGo = Books.stream()
.sorted()
.collect(Collectors.toCollection(ObservableList::new));
其中 ObservableList::new
是空 ObservableList
收集器的供应商。如果这不是您的 class 的工作方式,请更改它。
如果你想就地排序列表,不需要流,你可以直接调用
Collections.sort(books);
如果你想return一个新的排序ObservableList<Book>
使用流,你可以这样做:
ObservableList<Book> sortedBooks = books.stream()
.sorted()
.collect(Collectors.toList(FXCollections::observableArrayList));