由于是以流方式,所以怎么操作也不改变原来的集合

1、普通遍历forEach

List<String> list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
List<String> list2 = new ArrayList();
list.stream().forEach(str ->{
list2.add(str);
});
System.out.println(list2);

2、过滤filter

List<String> list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
List<String> list3 = new ArrayList();
// 过滤字符串为a的元素
list.stream().filter(str -> !"a".equals(str)).forEach(str -> {
list3.add(str);
});
System.out.println(list3);

3、排序sorted

List<String> list = new ArrayList();
list.add("ab");
list.add("aa");
list.add("c");
list.add("d");
System.out.println("操作前list: " + list);
List<String> collect = list.stream().sorted((a, b) -> {
return a.compareTo(b);
}).collect(Collectors.toList());
System.out.println("升序collect: " + collect);
List<String> collect2 = list.stream().sorted((a, b) -> {
return b.compareTo(a);
}).collect(Collectors.toList());
System.out.println("降序collect2: " + collect2);
}

4、操作字符串集合,返回拼接字符串。collect的Collectors.joining

List<String> list = new ArrayList();
list.add("b");
list.add("a");
list.add("c");
list.add("d");
System.out.println("操作前list: " + list);
String collect = list.stream().sorted((a, b) -> {
return b.compareTo(a);
}).collect(Collectors.joining(",", "前", "后"));
System.out.println("有前后collect: " + collect);
String collect2 = list.stream().sorted((a, b) -> {
return b.compareTo(a);
}).collect(Collectors.joining(","));
System.out.println("没前后collect: " + collect2);

5、操作map集合

List<Map<String, Object>> list = new ArrayList();
Map<String, Object> map = new HashMap<>();
map.put("id", "wwww");
list.add(map);
Map<String, Object> map2 = new HashMap<>();
map2.put("id", "qqqq");
list.add(map2);
Map<String, Object> map3 = new HashMap<>();
map3.put("name", "qqqq");
list.add(map3);
System.out.println("list: " + list);
String collect = list.stream().filter(map1 -> null != map1.get("id"))
.map(str -> str.get("id").toString())
.collect(Collectors.joining(",", "前", "后"));
System.out.println("collect: " + collect);

6、操作对象

List<Student> list = new ArrayList();
Student student = new Student();
student.setAge("11");
student.setName("aaa");
list.add(student);
Student student2 = new Student();
student2.setAge("22");
student2.setName("bbb");
list.add(student2);
System.out.println("list: " + list);
String collect = list.stream().map(student3 -> student3.getName())
.collect(Collectors.joining(",", "前", "后"));
System.out.println("collect: " + collect);

7、合并两个字符串数组flatMap

List<String[]> list = new ArrayList();
list.add(new String[]{"aa", "bb"});
list.add(new String[]{"ff", "ee"});
System.out.println("list: " + list);
String collect = list.stream().flatMap(Arrays::stream)
.collect(Collectors.joining(",", "前", "后"));
System.out.println("collect: " + collect);

8、合并两个字符串集合flatMap

List<List<String>> list = new ArrayList();
list.add(Arrays.asList(new String[]{"aa", "bb"}));
list.add(Arrays.asList(new String[]{"ff", "ee"}));
System.out.println("list: " + list);
String collect = list.stream().flatMap(list2 -> list2.stream())
.collect(Collectors.joining(",", "前", "后"));
System.out.println("collect: " + collect);

9、合并对象集合

List<List<Student>> list = new ArrayList();
List<Student> list1 = new ArrayList();
list1.add(new Student("23", "aaa"));
list1.add(new Student("43", "bbb"));
list.add(list1);
List<Student> list2 = new ArrayList();
list2.add(new Student("66", "qqq"));
list2.add(new Student("77", "www"));
list.add(list2);
System.out.println("list: " + list);
String collect = list.stream().flatMap(list4 -> list4.stream().map(student -> student.getName()))
.collect(Collectors.joining(",", "前", "后"));
System.out.println("collect: " + collect);

【记录】【java】JDK8新特性Stream方式遍历集合的更多相关文章

  1. Java 8 新特性-Stream更优雅的处理集合入门

    Java 8 新特性之--Stream 一. 简单介绍 Stream是Java 8提出了的一种新的对集合对象功能的增强.它集合Lambda表达式,对集合提供了一些非常便利,高效的操作,使得代码具有非常 ...

  2. 再来看看Java的新特性——Stream流

    半年前开始试着使用Java的新特性,给我印象最深的就是Stream流和Optional.其中Stream提高了看法效率,让代码看起来十分清爽. 为什么要使用流? 摘要中已经说明了,为了提高开发效率.流 ...

  3. jdk8新特性-stream

    一.什么是流stream 1.可理解为高级版本的 Iterator 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的. 2.单向,不可往复 数据只能遍历一次,遍历过一次后即用尽了,就好比 ...

  4. JAVA 8 新特性Stream初体验

    什么是 Stream? Stream(流)是一个来自数据源的元素队列并支持聚合操作 <strong元素队列< strong="">元素是特定类型的对象,形成一个队 ...

  5. JDK8新特性---stream流

    项目上用到了stream流,找篇blog,转载一下,介绍下Stream流的用法. 1 流概述  流是 JDK8 新增的成员,允许以声明性方式处理数据集合,可以把 Stream 流看作是遍历数据集合的一 ...

  6. Java8 新特性 Stream Api 之集合遍历

    前言 随着java版本的不断更新迭代,java开发也可以变得甜甜的,最新版本都到java11了,但是后面版本也是不在提供商用支持,需要收费,但是java8 依然是持续免费更新使用的,后面版本也更新很快 ...

  7. Java 8新特性--Stream API

    Java 8 API添加了一个新的抽象称为流Stream,以一种声明的方式处理数据,可以极大提高程序员的生产力,写出高效.干净.简洁的代码.这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可 ...

  8. Java 8 新特性---------Stream

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象 ...

  9. jdk8 新特性stream().map()

    1.大写字符串列表 1.1 简单的Java示例将Strings列表转换为大写 TestJava8.java package com.mkyong.java8; import java.util.Arr ...

随机推荐

  1. js里apply用法

    1.Function.apply,用于构造函数的继承,继承另外一个构建对象的属性与方法 function People(name,age){     this.name = name;     thi ...

  2. stm32中的型号对比——为什么很少用STM32F2,F3?

    源自网络 我觉得有三点: 1. F2属于加强版的F1,内核还是cortex M3,只是主频提高到了120MHz(F1是72MHz),但是这点提升没有实质性意义,性能比不上 2. F3是F4的削弱版,一 ...

  3. Java中的Import语句如何理解?

    作用: 编译时:它只是进行语法检查和格式转换:与头文件作用相同. 运行时:依赖类加载. http://bbs.csdn.net/topics/390397328 前面说的java的编译,这里纠正一下, ...

  4. HDU-1848-Fibonacci again and again(SG函数,博弈)

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1848 题意: 任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样 ...

  5. 论文画图工具使用(2)vision软件

    1 软件安装和破解 https://www.cnblogs.com/shitou6/p/8986396.html 自己的网盘 链接:https://pan.baidu.com/s/1EWU0xLMTI ...

  6. 腾讯蓝鲸cmdb部署

    蓝鲸配置平台 (CMDB)http://172.16.6.10:8088 环境(单机测试): Centos6 16G 200G 依赖环境: Java 1.8.0_92 python 2.7 ZooKe ...

  7. [RN] React Native 滚动跳转到指定位置

    React Native 滚动跳转到指定位置 一.结构 <ScrollView horizontal={true} ref={(view) => { this.myScrollView = ...

  8. GoCN每日新闻(2019-11-05)

    GoCN每日新闻(2019-11-05) GoCN每日新闻(2019-11-05) 1. Protobuf 终极教程 https://colobu.com/2019/10/03/protobuf-ul ...

  9. GlusterFS常用设置命令

    可信存储池(Trusted Storage Pool)创建存储池例如要创建一个包含3个服务器的存储池,则需要从第一个服务器server1中把另外两个服务器加入存储池中:# gluster peer p ...

  10. jQuery实现列表框双向选择操作

    对列表框的操作经常碰到过这样的应用:从左侧的列表框中选中要选的项添加到右侧列表框中,然后提交最终选择的项,对误操作而选中的项还可以执行移除操作.在很多系统中应用比如说求职网站的选择意向工作地区,QQ好 ...