• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java-Stream-flatMap

java 佚名 2年前 (2023-03-11) 34次浏览 已收录 0个评论

标签:flatMap Java stream Stream newArrayList CollUtil Leave new

  Leave leave1 = new Leave("1","1",new Date(),CollUtil.newArrayList("A","B"));
  Leave leave2 = new Leave("2","2",new Date(),CollUtil.newArrayList("C","D"));
  Leave leave3 = new Leave("3","3",new Date(),CollUtil.newArrayList("E","F"));
  ArrayList<Leave> leaves = CollUtil.newArrayList(leave1, leave2, leave3);<br>

对于上述代码,如果我想取出第4个参数的集合如何处理呢?在flatMap之前,我所能想到的就是暴力的遍历吧,如下:

List<String> resultList = new ArrayList<>();
for (Leave leaf : leaves) {
    resultList.addAll(leaf.getNameList());
}

这样就将所有的nameList放入一个集合中,但是如果我想用stream流呢?在未了解flatMap前,我可能会用Map,但是map有个问题在于,我想要一个集合,但是Map会生产集合嵌套集合,代码如下:

List<List<String>> resultList = leaves.stream().map(Leave::getNameList).collect(Collectors.toList());

如果我既想用stream,又想要List<String> resultList呢?flatMap闪亮登场:

 List<String> resultList = leaves.stream()<br>                                 .flatMap(leave -> leave.getNameList().stream())<br>                                 .collect(Collectors.toList());
public static void main(String[] args) {
        ArrayList<String> strings1 = CollUtil.newArrayList("123", "212", "212");
        ArrayList<String> strings2 = CollUtil.newArrayList("abc", "qwe", "qbc");
        List<String> collect = Stream.of(strings1,strings2).flatMap(Collection::stream).collect(Collectors.toList());
}

以上flatMap是将相同类型元素合并到一起,既然能合并到一起,那flatMap能不能将一起的元素拆分开呢?以下是将元素进行拆分:

 ArrayList<String> list = CollUtil.newArrayList("ABC", "DEF", "GHI");
 List<String> collect = list.stream().flatMap(ele -> Stream.of(ele.split(""))).collect(Collectors.toList());

标签:flatMap,Java,stream,Stream,newArrayList,CollUtil,Leave,new

来源: https://www.cnblogs.com/sun-10387834/p/16372205.html


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java-Stream-flatMap
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址