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

如何使用Stream.FlatMap()?[副本]

百里金林
2023-03-14

我有stream set > ,我只想有一个stream 。我尝试使用flatmap(),但它不起作用,因为它无法将SortedSet的流扁平化。

String productName = "p1";
Set<Product> products = new HashSet<>();
products.add(new Product(productName));
Stream<SortedSet<String>> sortedSetStream = products.stream().map(p -> Util.getProductNames(p) );

共有1个答案

卫振
2023-03-14

要从这些对象的集合流中获得所有对象的流,您需要将集合扁平化。任何集合都可以转换为流:

Stream<SortedSet<String>> sortedSetStream = products.stream().map(p -> Util.getProductNames(p) );
Stream<String> ss = sortedSetStream.flatMap( s -> s.stream() );

或者(如果您更喜欢方法引用):

Stream<String> ss = sortedSetStream.flatMap( Collection::stream );
 类似资料:
  • 请考虑以下类: 注意:很重要的一点是,我不能修改这个类,因为我是从外部API中使用它的。 还要考虑以下订单层次结构: 通过递归地使用(以及一个helper类),我已经设法做到了这一点,如下所示: 这是helper类: 以下一行: 产生以下输出: 到目前为止还不错。结果是绝对正确的。 但是,在阅读了这个问题之后,我对在递归方法中的用法有些担心。特别是,我想知道流是如何被扩展的(如果这是术语的话)。因

  • 我试着用带有“and”的if函数。它不起作用-有更好的方法或更好的命令吗?下面是我的代码示例: 谢谢帮忙!

  • 在方法中的一个中,给定我的,我将初始数据插入到DB中。除其他外,还有一些用户需要初始化。但是我将与一起使用,,后者只有异步方法,如下所示: 所以问题是,是否有一种方法可以将与一起使用而不会出现并发问题? 我尝试了从乐观并发模式中获得的以下方法,但它不会创建用户:

  • 我想在上面运行代码。但在下面显示消息不起作用。 预测错误(拟合,h=52):未找到对象“拟合” 我的意图是...如果第一个函数有错误(

  • 我有一个ANTLR3语法,它构建了一个抽象语法树。我正在考虑升级到ANTLR4。但是,ANTLR4似乎只构建解析树,而不构建抽象语法树。例如,选项不再被识别。此外,在“最终的ANTLR4参考文献”的文本中既没有“AST”也没有“抽象语法”。

  • 如果使用隐式和显式等待器,将发生以下错误: