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. springboot全局异常处理(1)

    新建一个类 在类上加一个注解即可 @ControllerAdvice /** * 全局错误处理 * @author sys * */ @ControllerAdvice @ResponseBody p ...

  2. InnoDB存储引擎与MyIsam存储引擎的区别

    特性比较 mysql5.5之后默认的存储引擎为InnoDB,在此之前默认存储引擎是MyIsam 特点 MyIsam InnoDB 锁机制 表锁 行锁 事务 不支持 支持 外键 不支持 支持 B树索引 ...

  3. AD-logon workstation

    默认AD登录到限制为64个 原因 发生此问题的原因是User-Workstations属性的Range-Upper值为1,024个字符.使用Active Directory用户和计算机输入NetBIO ...

  4. mybatis从入门到精通

    https://www.cnblogs.com/zwwhnly/p/11104020.html

  5. page内置对象

  6. git和bootstrap

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

  7. noip初赛试题

    链接: https://pan.baidu.com/s/1yoOMIUqMRBnBUPprC3o6HQ&shfl=shareset 提取码: m8ns 复制这段内容后打开百度网盘手机App,操 ...

  8. [HTML5] Native lazy-loading for the web

    According to HTTPArchive, images are the most requested asset type for most websites and usually tak ...

  9. jsp之大文件分段上传、断点续传

    1,项目调研 因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面. http ...

  10. pgloader 学习(六) 加载csv 数据

    关于加载的配置参数都是使用comand file command file 参考格式 LOAD CSV FROM 'GeoLiteCity-Blocks.csv' WITH ENCODING iso- ...