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

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. IMP本质上是一个通用的函数指针

    IMP:通用的函数指针 /// A pointer to the function of a method implementation. #if !OBJC_OLD_DISPATCH_PROTOTY ...

  2. 使用Windows事件查看器调试崩溃

    本文讨论如何使用Windows事件查看器获取实际崩溃的模块以及代码中崩溃的位置.示例代码是用C++编写的,以生成不同类型的崩溃,例如访问冲突和堆栈溢出. 简介 我经常听同事和QA那里听说,一个特定的崩 ...

  3. GoCN每日新闻(2019-10-30)

    GoCN每日新闻(2019-10-30) GoCN每日新闻(2019-10-30) 1. Asta Xie: 玩转Go语言,从beego开始 https://mp.weixin.qq.com/s/Io ...

  4. bzoj 3585 mex - 线段树 - 分块 - 莫队算法

    Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. Input 第一行n,m. 第二行为n个数. 从第三行开始,每行一个询问 ...

  5. 油猴ajaxhook

    // ==UserScript== // @name ajaxHook // @namespace http://tampermonkey.net/ // @version 0.1 // @descr ...

  6. NIOBuffer 缓冲区

    Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但是,Channel,Buffer 和 Select ...

  7. 聊聊Mysql索引和redis跳表 ---redis的有序集合zset数据结构底层采用了跳表原理 时间复杂度O(logn)(阿里)

    redis使用跳表不用B+数的原因是:redis是内存数据库,而B+树纯粹是为了mysql这种IO数据库准备的.B+树的每个节点的数量都是一个mysql分区页的大小(阿里面试) 还有个几个姊妹篇:介绍 ...

  8. centos7 安装Hadoop-2.6.0-cdh5.16.1.tar.gz

    准备Hadoop-2.6.0-cdh5.16.1.tar.gz 下载网址 http://archive.cloudera.com/cdh5/cdh/5/Hadoop-2.6.0-cdh5.16.1.t ...

  9. spring boot整合websocket之使用自带tomcat启动项目报错记录

    项目中用到websocket,就将原来写好的websocket工具类直接拿来使用,发现前端建立连接的时候报404,经查找发现是因为原来用的是配置的外部tomcat启动,这次是spring boot自带 ...

  10. python PIL 图像处理

    python PIL 图像处理 This blog is from: https://www.jianshu.com/p/e8d058767dfa Image读出来的是PIL的类型,而skimage. ...