假如我们有这样一个需求给定单词列表["Hello","World"],你想要返回列表["H","e","l", "o","W","r","d"],
对于这样的需求,我们可能想到的第一个版本可能是这样子的:

words.stream()
.map(word -> word.split(""))
.distinct()
.collect(toList());

这个方法的问题在于,传递给map方法的Lambda为每个单词返回了一个String[](String
列表)。因此, map 返回的流实际上是Stream<String[]> 类型的。你真正想要的是用
Stream<String>来表示一个字符流。因此,这是行不通的。

以下是我对这个问题的解法和分步写法,希望能对你有帮助:

  String ss = "Hello";

         String[] aa = ss.split("");

         String[] bb = {"H", "e", "l", "l", "o"};

         String[] strings = {"Hello", "World"};

         //Arrays.stream接收一个数组返回一个流
List<Stream<String>> streamList = Arrays.asList(strings).stream().
map(str -> str.split("")).
map(str -> Arrays.stream(str)).
collect(Collectors.toList()); //分步写(map) Stream<String[]> stream = Arrays.asList(strings).stream().
map(str -> str.split("")); Stream<Stream<String>> streamStream = stream.map(strings1 -> Arrays.stream(strings1));
List<Stream<String>> streamList1 = streamStream.collect(Collectors.toList()); List<String> stringList = Arrays.asList(strings).stream().
map(str -> str.split("")).
flatMap(str -> Arrays.stream(str))
.collect(Collectors.toList()); //分步写(流只能消费一次)(flatMap)
Stream<String[]> stream1 = Arrays.asList(strings).stream().
map(str -> str.split("")); Stream<String> stringStream = stream1.flatMap(strings1 -> Arrays.stream(strings1)); List<String> stringList1 = stringStream.collect(Collectors.toList()); 对flatMap的说明:这个在这里的主要作用是对流进行扁平化
最后给大家推荐一个专栏,http://gk.link/a/10fxp

最新文章

  1. 深入理解javascript系列(4):立即调用的函数表达式
  2. 用AE (Adobe After Effects) 处理视频
  3. Android开源框架:Universal-Image-Loader解析(一)
  4. 基础学习day05---面向对象一类,对象、封装
  5. WPF 文本框添加水印效果
  6. 经典JSP数据库连接(ORACLE、SQL Server、MySQL)
  7. hdu 3046 Pleasant sheep and big big wolf 最小割
  8. Python [Leetcode 141]Linked List Cycle
  9. kaggle之手写体识别
  10. 别说你不知道java中的包装类,wrapper type,以及容易在自动拆箱中出现的问题
  11. Java泛型范例
  12. python&gt;oop
  13. windwos 下编译minicap
  14. 【Ruby】【基础】
  15. zabbix server配置文件参数详解
  16. 15款Django开发常用软件包(转)
  17. cocos2d接安卓facebook插件(已测cocos-x 3.7 3.8版本)
  18. 20155314 2016-2017-2 《Java程序设计》实验三 敏捷开发与XP实践
  19. n人围圈报数,报3出圈
  20. 《从零开始学Swift》学习笔记(Day 65)——Cocoa Touch设计模式及应用之选择器

热门文章

  1. python中利用队列asyncio.Queue进行通讯详解
  2. 微信小程序的生命周期和APP对象的使用
  3. 之前写的页面导出Excel表格
  4. plsql连接本地oracle数据库,而远程主机却无法连接,出现无监听程序的解决方法(转)
  5. Linux进程的虚拟内存
  6. vs资源视图加载失败
  7. shell下的 awk/sed/grep/seq/tr
  8. 【中间件】Kafka 学习 01
  9. MARKDOWN使用文档
  10. tf-图像预处理