【记录】【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 ...
随机推荐
- mysql 常用命令 | 表间 弱关联 join
show databases; use mhxy; select database(); show tables; desc account_list_175; ),(); select from_u ...
- mysql 执行存储过程报错Prepared statement needs to be re-prepared
今日思语:不喜欢再见 说再见,因为有时明知道下一次再见已是遥遥无期或是不再见 错误如下: ERROR 1615 (HY000) at line 406 in file: 'update-mysql.s ...
- 2017EC Final L SOS——找规律&&博弈
题意 有n个格子排成一行,两人轮流填,可填入"S"或"0",先得到"SOS"的人胜:如果全部填完也没有出现"SOS",则 ...
- eslint Cannot read property 'range' of null错误
eslint Cannot read property 'range' of null错误 手动添加的配置,2个项目OK,还个项目 运行报错 Cannot read property 'range ...
- ent 基本使用十七 分页与排序
ent 提供了方便的数据分页以及排序处理 limit 分页 users, err := client.User. Query(). Limit(n). All(ctx) offset 分页 users ...
- 用Matlab证明三维勾股定理
证明代码: syms a b c ; ab=sqrt(a^+b^); bc=sqrt(c^+b^); ca=sqrt(c^+a^); p=(ab+bc+ca)/; s1=(p*(p-ab)*(p-bc ...
- mac 以多tab的方式打开
让mac 始终以多tab的方式打开程序 背景: 开发中始终需要多个 项目 的方式进行处理, 但一直使用 `command + `` 的方式总是比较烦人, 有没有一个比较好的视图方式呢; 即我想在一个窗 ...
- AngularJS实现地址栏取值
有时候我们由如下需求 1.从a.html跳转到b.html 2.从a跳转时携带参数和值. 3.从b.html中取出传过来的参数值 在AngularJS的操作如下 在a.html中添加 <a hr ...
- c# 画正态分布图
/// <summary> /// 提供正态分布的数据和图片 /// </summary> public class StandardDistribution { /// &l ...
- pm2 启动模式 fork 和 cluster 的区别
fork模式,单实例多进程,常用于多语言混编,比如php.python等,不支持端口复用,需要自己做应用的端口分配和负载均衡的子进程业务代码. 缺点就是单服务器实例容易由于异常会导致服务器实例崩溃. ...