当前位置: 首页 > 知识库问答 >
问题:

如何使流返回列表?(Java)[重复]

柳越
2023-03-14

我有以下清单:

可观察列表

我知道,如果我想有排序列表,我可以写

public ObservableList<String> getBooks() {
    return Books;       
}

现在,我的问题可能非常荒谬,但……有没有一种方法可以实现与上述流相同的结果?差不多

Books
    .stream()
    .sorted();

但是让流返回给我一个排序的可观察列表?
我刚刚开始学习流,还不太了解它,所以我想知道这样的事情是否可能。


共有3个答案

姬慎之
2023-03-14

如果您想对列表进行排序,则不需要流,只需调用

Collections.sort(books);

如果要返回新的已排序的可观察列表

ObservableList<Book> sortedBooks = books.stream()
        .sorted()
        .collect(Collectors.toList(FXCollections::observableArrayList));

卫和洽
2023-03-14

您需要使用< code >收集器将流转换回列表。如果你不在乎它是什么类型的列表,有一个内置的收集器:

getBooks().stream().sorted().collect(Collectors.toList())

如果它需要一个可观察的列表,你需要发明你自己的收集器:

getBooks().stream().sorted
    .collect(ObservableList::new, ObservableList::add, ObservableList::addAll);
晏鸿畅
2023-03-14
匿名用户

旁注:Books变量的错误命名约定;使用书籍

这确实是可能的,使用Collectors。甚至是收藏家。假设观察列表是某种类型的Collection,您可以执行以下操作:

ObservableList<String> hereYouGo = Books.stream()
      .sorted()
      .collect(Collectors.toCollection(ObservableList::new));

其中< code>ObservableList::new是收集器的空< code>ObservableList的提供者。如果你的类不是这样工作的,就改变它。

 类似资料:
  • 在Java 8中,我越来越多地用替换返回值。 所以我曾经有: 我现在使用: 我对此的论点是: 它强制执行基础列表的不变性。 它隐藏了存在基础列表的事实。之后可以将其更改为集合或其他结构,而无需更改方法签名 它很好地封装了该方法的用户希望对项进行处理,而不是对列表进行处理 如果需要,它可以在以后进行简单的并行化 事实上,现在,在我的代码中,返回<code>列表 显然,其中一些可以通过不可变集合来实现

  • 如何将流收集到我指定的子类型列表中? 换句话说,我希望这个测试通过。我应该在注释行上执行哪些操作才能将流转换为 实例?

  • 问题内容: 我想知道如何对方法返回List的JSON数组,例如: 我想知道如何在我的方法中接收List参数类型 我已经阅读了有关JaxbContext的文章,我了解它如何为我提供帮助。 问题答案: 使用JAXB时,支持两种类型。第一个是元素列表,第二个是元素定界字符串(“常规” XML值或属性,使用某些定界符将其解析为列表)。第一个似乎是您想要的(“数组”)。 有关参考,请参见:http : //

  • 我无法解决这个问题。 我想用Java流来解决这个问题: 有什么解决办法吗?谢谢!

  • 我试图重写在子类中返回type as list的方法,如下例所示,由于泛型问题,我无法在子类中执行此操作。我无法更改我的超类代码,因此如何解决该问题?任何人都可以指引我。。。非常感谢。 无法更新的超类: 子类:

  • 下面的代码生成一个 空指针异常 由于此人在本例中没有任何,因此我想将返回到 尝试添加仍然会产生相同的错误。 这应该如何处理?如果条件,有没有办法处理同一行代码而不是再检查一行?