package org.study2.java8.stream;

 import org.junit.Test;

 import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream; /**
* Java 8 – Streams
* url:http://www.studytrails.com/java/java8/java8_streams/
* url:https://www.cnblogs.com/andywithu/p/7404101.html
*/
public class StreamDemo {
@Test
public void test() {
List<String> genre = new ArrayList<String>(Arrays.asList("rock", "pop", "jazz", "reggae"));
long a = genre.stream().filter(s -> s.startsWith("r")).count();
System.out.println(a); boolean b = genre.stream().allMatch(s -> !s.isEmpty());
System.out.println(b); boolean b2 = genre.stream().anyMatch(s -> s.indexOf("r") == 0);
System.out.println(b2); System.out.println(genre.stream().peek(s -> System.out.println(s)).anyMatch(s -> s.indexOf("r") == 0));
System.out.println(genre.stream().peek(s -> System.out.println(s)).count()); } // 现在有一个List<User> 的集合,如何把这个list转换成Map<Integer, User> 其中,key是user id,value是User对象
@Test
public void test1() {
List<User> users = Arrays.asList(new User(1, "Tomcat"), new User(2, "Apache"), new User(3, "Nginx"));
Map<Integer, User> map = users.stream().collect(Collectors.toMap(obj -> obj.getId(), obj -> obj));
System.out.println(map); // 或者使用方法的引用
Map<Integer, User> map2 = users.stream().collect(Collectors.toMap(User::getId, obj -> obj));
System.out.println(map2);
} // 把list中的每个map中的id取出来,转换成list<String>
@Test
public void test2() {
List<Map<String, String>> list = new ArrayList<>(); Map<String, String> map1 = new HashMap<>();
map1.put("id", "101");
map1.put("name", "Tomcat"); Map<String, String> map2 = new HashMap<>();
map2.put("id", "102");
map2.put("name", "Apache"); Map<String, String> map3 = new HashMap<>();
map3.put("id", "103");
map3.put("name", "Nginx"); list.add(map1);
list.add(map2);
list.add(map3); List<String> ids = list.stream().map(entity -> entity.get("id")).collect(Collectors.toList());
System.out.println(ids); // 或者
List<Object> ids2 = Arrays.asList(list.stream().map(entity -> entity.get("id")).toArray());
} // 把url的请求参数(如:type=1&from=APP&source=homePage)转换成Map<String, String>
@Test
public void test3() {
String queryString = "type=1&from=APP&source=homePage";
Map<String, String> map = Stream.of(queryString.split("&")).map(obj -> obj.split("=")).collect(Collectors.toMap(entry -> entry[0], entry -> entry[1]));
System.out.println(map);
} // 把List<String>转换成List<Integer>
@Test
public void test4() {
List<String> strs = Arrays.asList("1", "2", "3");
List<Integer> ints = strs.stream().map(obj -> Integer.valueOf(obj)).collect(Collectors.toList());
} }

User.Class

 package org.study2.java8.stream;

 public class User {

     private int id;
private String name; public User(int id, String name) {
this.id = id;
this.name = name;
} public int getId() {
return id;
} public String toString() {
return "User [id=" + id + ", name=" + name + "]";
} }

详细讲解参考:

https://www.cnblogs.com/andywithu/p/7404101.html

Java 8 stream 经典示例的更多相关文章

  1. JDK 8 之 Stream sorted() 示例

    原文链接:http://www.concretepage.com/java/jdk-8/java-8-stream-sorted-example 国外对Java8一系列总结的不错, 翻译过来给大家共享 ...

  2. Java基础学习总结(44)——10个Java 8 Lambda表达式经典示例

    Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Ja ...

  3. Java 8 Stream API的使用示例

    前言 Java Stream API借助于Lambda表达式,为Collection操作提供了一个新的选择.如果使用得当,可以极大地提高编程效率和代码可读性. 本文将介绍Stream API包含的方法 ...

  4. Java的Stream流式操作

    前言 最近在实习,在公司看到前辈的一些代码,发现有很多值得我学习的地方,其中有一部分就是对集合使用Stream流式操作,觉得很优美且方便.所以学习一下Stream流,在这里记录一下. Stream是什 ...

  5. Java中的经典算法之选择排序(SelectionSort)

    Java中的经典算法之选择排序(SelectionSort) 神话丿小王子的博客主页 a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟 ...

  6. Java笔记:Java 流(Stream)、文件(File)和IO

    更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...

  7. [零]java8 函数式编程入门官方文档中文版 java.util.stream 中文版 流处理的相关概念

    前言 本文为java.util.stream 包文档的译文 极其个别部分可能为了更好理解,陈述略有改动,与原文几乎一致 原文可参考在线API文档 https://docs.oracle.com/jav ...

  8. 关于java中Stream理解

    关于java中Stream理解 Stream是什么 Stream:Java 8新增的接口,Stream可以认为是一个高级版本的Iterator.它代表着数据流,流中的数据元素的数量可以是有限的, 也可 ...

  9. stream.map示例

    引用1:https://blog.csdn.net/sanchan/article/details/70753645 引用2:https://www.ibm.com/developerworks/cn ...

随机推荐

  1. ES6中Number中的扩展

    1.Number.parseInt() , Number.parseFloat() 在ES6中将parseInt()和parseFloat()都移植到Number对象上去,方法的行为保持不变. // ...

  2. tomcat下载地址

    https://archive.apache.org/dist/tomcat/tomcat-6/v6.0.53/bin/ Index of /dist/tomcat/tomcat-6/v6.0.53 ...

  3. PHP中的分支及循环语句

    这次实践的都是PHP7的语法. 感觉是以前的5差别不是那么大,只是希望越来越快吧. <?php $looking = isset($_GET['title']) || isset($_GET[' ...

  4. python测试开发django-58.MySQL server has gone away错误的解决办法

    前言 使用django执行sql相关操作的时候,出现一个"MySQL server has gone away"错误,后来查了下是sql执行过程中,导入的文件较大时候,会出现这个异 ...

  5. QT 子文件的建立(pri)

    QT 在做项目的时候有时会有许多不同种类的文件,如果这些文件放在一起会显得特别乱,我们可以将文件用文件夹分类,这样会比较有条理. 1. 在项目文件夹下建立新的文件夹,并在文件夹中添加文本文档将后缀改为 ...

  6. git和bootstrap

    在linux系统中某种类型的服务有没有启动:ps -ef|grep 对应的服务名称 然后修改gitlab中的两个配置文件的信息 一般情况下是先创建组,然后在创建项目 常见的协议有http协议   ss ...

  7. keras中to_categorical()函数解析

    from keras.utils.np_utils import * # 类别向量定义 b = [0, 1, 2, 3, 4, 5, 6, 7, 8] # 调用to_categorical将b按照9个 ...

  8. Apache Solr < 8.2.0远程命令执行漏洞(CVE-2019-0193)

    介绍:Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现. 漏洞原因:此次漏洞出现在Apache Solr的D ...

  9. css 网格布局

    一.概述 网格布局(Grid)是最强大的 CSS 布局方案. 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局.以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了. 上 ...

  10. H5如何实现关闭当前页面,跳转到新页面?

    小程序有此功能的跳转方法. 那么H5如何实现该功能?  很简单. location.replace('new.html')  这个方法可以实现 关闭当前页面,跳转到新页面 的效果. 而   windo ...