【记录】【java】JDK8新特性Stream方式遍历集合
由于是以流方式,所以怎么操作也不改变原来的集合
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方式遍历集合的更多相关文章
- Java 8 新特性-Stream更优雅的处理集合入门
Java 8 新特性之--Stream 一. 简单介绍 Stream是Java 8提出了的一种新的对集合对象功能的增强.它集合Lambda表达式,对集合提供了一些非常便利,高效的操作,使得代码具有非常 ...
- 再来看看Java的新特性——Stream流
半年前开始试着使用Java的新特性,给我印象最深的就是Stream流和Optional.其中Stream提高了看法效率,让代码看起来十分清爽. 为什么要使用流? 摘要中已经说明了,为了提高开发效率.流 ...
- jdk8新特性-stream
一.什么是流stream 1.可理解为高级版本的 Iterator 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的. 2.单向,不可往复 数据只能遍历一次,遍历过一次后即用尽了,就好比 ...
- JAVA 8 新特性Stream初体验
什么是 Stream? Stream(流)是一个来自数据源的元素队列并支持聚合操作 <strong元素队列< strong="">元素是特定类型的对象,形成一个队 ...
- JDK8新特性---stream流
项目上用到了stream流,找篇blog,转载一下,介绍下Stream流的用法. 1 流概述 流是 JDK8 新增的成员,允许以声明性方式处理数据集合,可以把 Stream 流看作是遍历数据集合的一 ...
- Java8 新特性 Stream Api 之集合遍历
前言 随着java版本的不断更新迭代,java开发也可以变得甜甜的,最新版本都到java11了,但是后面版本也是不在提供商用支持,需要收费,但是java8 依然是持续免费更新使用的,后面版本也更新很快 ...
- Java 8新特性--Stream API
Java 8 API添加了一个新的抽象称为流Stream,以一种声明的方式处理数据,可以极大提高程序员的生产力,写出高效.干净.简洁的代码.这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可 ...
- Java 8 新特性---------Stream
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象 ...
- jdk8 新特性stream().map()
1.大写字符串列表 1.1 简单的Java示例将Strings列表转换为大写 TestJava8.java package com.mkyong.java8; import java.util.Arr ...
随机推荐
- Boggle Game
Description Given a board which is a 2D matrix includes a-z and dictionary dict, find the largest co ...
- 强大的接口调试工具-Postman图文详解
前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性.而这要求前端开发进度和后端进度保持基本一致,任何一方的进度跟不上,都无法及时完成功能 ...
- 洛谷P3258 [JLOI]2014松鼠的新家
题目 树上差分 树上点差分,注意会出现路径端点多记录的情况,这时需要在最后输出的时候输出子树的差分数组的和-1,而不是在处理原数据的时候减1.并且a[n]不需要糖果,最后也减去就行. #include ...
- Python运行语法错误:IndentationError: unindent does not match any outer indentation level
python脚本没有对齐.新的Python语法,是不支持的代码对齐中,混用TAB和空格的.
- Netty通信网络参数配置
Netty服务端/客户端网络通信过程中常用的参数: Name Associated setter method "writeBufferHighWaterMark" 默认64 * ...
- SpringBoot(十七):SpringBoot2.1.1数据类型转化器Converter
什么场景下需要使用类型化器Converter? springboot2.1.1在做Restful Api开发过程中往往希望接口直接接收date类型参数,但是默认不加设置是不支持的,会抛出异常:系统是希 ...
- 【python基础学习】基础重点难点知识汇总
python中decorator装饰器 语法示例: @decorator 什么是装饰器: 问题: 定义一个函数后 在运行时动态增加功能 又不想改动函数本身的代码 示例: # 希望对下列函数调用增加lo ...
- Asynchronous method in while loop 构造异步调用链
Asynchronous method in while loop https://stackoverflow.com/questions/43064719/javascript-asynchrono ...
- CentOS 7.5 安装Oracle 11gR2 86%报错:Error in invoking target 'agent nmhs' of makefile
解决方案: 不要关闭安装过程,另外打开终端窗口,将ins_emagent.mk文件中的 (MK_EMAGENT_NMECTL)更改为$(MK_EMAGENT_NMECTL) -lnnz11,然后在安装 ...
- 解决若依linux启动ERROR - unregister mbean error javax.management.InstanceNotFoundException: com.alibaba.druid:type=
项目中使用druid对数据库连接池进行管理,在本地及测试环境均无问题,但是上了生产环境后,每当tomcat第一次启动时,日志未报错,但是页面总是出不来,在关闭tomcat时,看日志,发现报错如下: E ...