1.大写字符串列表

1.1 简单的Java示例将Strings列表转换为大写

TestJava8.java
  1. package com.mkyong.java8;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.stream.Collectors;
  7.  
  8. public class TestJava8 {
  9.  
  10. public static void main(String[] args) {
  11.  
  12. List<String> alpha = Arrays.asList("a", "b", "c", "d");
  13.  
  14. //Before Java8
  15. List<String> alphaUpper = new ArrayList<>();
  16. for (String s : alpha) {
  17. alphaUpper.add(s.toUpperCase());
  18. }
  19.  
  20. System.out.println(alpha); //[a, b, c, d]
  21. System.out.println(alphaUpper); //[A, B, C, D]
  22.  
  23. // Java 8
  24. List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.toList());
  25. System.out.println(collect); //[A, B, C, D]
  26.  
  27. // Extra, streams apply to any data type.
  28. List<Integer> num = Arrays.asList(1,2,3,4,5);
  29. List<Integer> collect1 = num.stream().map(n -> n * 2).collect(Collectors.toList());
  30. System.out.println(collect1); //[2, 4, 6, 8, 10]
  31.  
  32. }
  33.  
  34. }

2.对象列表 - >字符串列表

2.1 name从staff对象列表中获取所有值

Staff.java

  1. package com.mkyong.java8;
  2.  
  3. import java.math.BigDecimal;
  4.  
  5. public class Staff {
  6.  
  7. private String name;
  8. private int age;
  9. private BigDecimal salary;
  10. //...
  11. }

TestJava8.java

  1. package com.mkyong.java8;
  2.  
  3. import java.math.BigDecimal;
  4. import java.util.ArrayList;
  5. import java.util.Arrays;
  6. import java.util.List;
  7. import java.util.stream.Collectors;
  8.  
  9. public class TestJava8 {
  10.  
  11. public static void main(String[] args) {
  12.  
  13. List<Staff> staff = Arrays.asList(
  14. new Staff("mkyong", 30, new BigDecimal(10000)),
  15. new Staff("jack", 27, new BigDecimal(20000)),
  16. new Staff("lawrence", 33, new BigDecimal(30000))
  17. );
  18.  
  19. //Before Java 8
  20. List<String> result = new ArrayList<>();
  21. for (Staff x : staff) {
  22. result.add(x.getName());
  23. }
  24. System.out.println(result); //[mkyong, jack, lawrence]
  25.  
  26. //Java 8
  27. List<String> collect = staff.stream().map(x -> x.getName()).collect(Collectors.toList());
  28. System.out.println(collect); //[mkyong, jack, lawrence]
  29. }

3. 对象列表 - >其他对象列表

3.1 此示例说明如何将staff对象列表转换为对象列表StaffPublic

Staff.java

  1. package com.mkyong.java8;
  2.  
  3. import java.math.BigDecimal;
  4.  
  5. public class Staff {
  6.  
  7. private String name;
  8. private int age;
  9. private BigDecimal salary;
  10. //...
  11. }

StaffPublic.java

  1. package com.mkyong.java8;
  2.  
  3. public class StaffPublic {
  4.  
  5. private String name;
  6. private int age;
  7. private String extra;
  8. //...
  9. }

3.2 Java 8之前

BeforeJava8.java

  1. package com.mkyong.java8;
  2.  
  3. import java.math.BigDecimal;
  4. import java.util.ArrayList;
  5. import java.util.Arrays;
  6. import java.util.List;
  7.  
  8. public class BeforeJava8 {
  9.  
  10. public static void main(String[] args) {
  11.  
  12. List<Staff> staff = Arrays.asList(
  13. new Staff("mkyong", 30, new BigDecimal(10000)),
  14. new Staff("jack", 27, new BigDecimal(20000)),
  15. new Staff("lawrence", 33, new BigDecimal(30000))
  16. );
  17.  
  18. List<StaffPublic> result = convertToStaffPublic(staff);
  19. System.out.println(result);
  20.  
  21. }
  22.  
  23. private static List<StaffPublic> convertToStaffPublic(List<Staff> staff) {
  24.  
  25. List<StaffPublic> result = new ArrayList<>();
  26.  
  27. for (Staff temp : staff) {
  28.  
  29. StaffPublic obj = new StaffPublic();
  30. obj.setName(temp.getName());
  31. obj.setAge(temp.getAge());
  32. if ("mkyong".equals(temp.getName())) {
  33. obj.setExtra("this field is for mkyong only!");
  34. }
  35.  
  36. result.add(obj);
  37. }
  38.  
  39. return result;
  40.  
  41. }
  42.  
  43. }

输出:

  1. [
  2. StaffPublic{name='mkyong', age=30, extra='this field is for mkyong only!'},
  3. StaffPublic{name='jack', age=27, extra='null'},
  4. StaffPublic{name='lawrence', age=33, extra='null'}
  5. ]

3.3 Java 8的例子

NowJava8.java

  1. package com.mkyong.java8;
  2.  
  3. package com.hostingcompass.web.java8;
  4.  
  5. import java.math.BigDecimal;
  6. import java.util.Arrays;
  7. import java.util.List;
  8. import java.util.stream.Collectors;
  9.  
  10. public class NowJava8 {
  11.  
  12. public static void main(String[] args) {
  13.  
  14. List<Staff> staff = Arrays.asList(
  15. new Staff("mkyong", 30, new BigDecimal(10000)),
  16. new Staff("jack", 27, new BigDecimal(20000)),
  17. new Staff("lawrence", 33, new BigDecimal(30000))
  18. );
  19.  
  20. // convert inside the map() method directly.
  21. List<StaffPublic> result = staff.stream().map(temp -> {
  22. StaffPublic obj = new StaffPublic();
  23. obj.setName(temp.getName());
  24. obj.setAge(temp.getAge());
  25. if ("mkyong".equals(temp.getName())) {
  26. obj.setExtra("this field is for mkyong only!");
  27. }
  28. return obj;
  29. }).collect(Collectors.toList());
  30.  
  31. System.out.println(result);
  32.  
  33. }
  34.  
  35. }

输出:

  1. [
  2. StaffPublic{name='mkyong', age=30, extra='this field is for mkyong only!'},
  3. StaffPublic{name='jack', age=27, extra='null'},
  4. StaffPublic{name='lawrence', age=33, extra='null'}
  5. ]

jdk8 新特性stream().map()的更多相关文章

  1. jdk8新特性-stream

    一.什么是流stream 1.可理解为高级版本的 Iterator 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的. 2.单向,不可往复 数据只能遍历一次,遍历过一次后即用尽了,就好比 ...

  2. JDK8新特性---stream流

    项目上用到了stream流,找篇blog,转载一下,介绍下Stream流的用法. 1 流概述  流是 JDK8 新增的成员,允许以声明性方式处理数据集合,可以把 Stream 流看作是遍历数据集合的一 ...

  3. jdk8的特性stream().map()

    转: https://blog.csdn.net/sanchan/article/details/70753645 java8的optional的使用: http://www.jdon.com/ide ...

  4. 【记录】【java】JDK8新特性Stream方式遍历集合

    由于是以流方式,所以怎么操作也不改变原来的集合 1.普通遍历forEach List<String> list = new ArrayList(); list.add("a&qu ...

  5. jdk8新特性Stream

    Stream的方法描述与实例 1,filter  过滤 Person p1 = new Person(); p1.setName("P1"); p1.setAge(10); Per ...

  6. JDK8新特性关于Stream流

    在Java1.8之前还没有stream流式算法的时候,我们要是在一个放有多个User对象的list集合中,将每个User对象的主键ID取出,组合成一个新的集合,首先想到的肯定是遍历,如下: 1 2 3 ...

  7. JDK8新特性:使用stream、Comparator和Method Reference实现集合的优雅排序

    大家对java接口Comparator和Comparable都不陌生,JDK8里面Comparable还和以前一样,没有什么改动:但是Comparator在之前基础上增加了很多static和defau ...

  8. JDK8新特性一览

    转载自:http://blog.csdn.net/qiubabin/article/details/70256683 官方新特性说明地址 Jdk8新特性.png 下面对几个常用的特性做下重点说明. 一 ...

  9. 一次电话Java面试的问题总结(JDK8新特性、哈希冲突、HashMap原理、线程安全、Linux查询命令、Hadoop节点)

    面试涉及问题含有: Java JDK8新特性 集合(哈希冲突.HashMap的原理.自动排序的集合TreeSet) 多线程安全问题 String和StringBuffer JVM 原理.运行流程.内部 ...

随机推荐

  1. 【luogu P2984 [USACO10FEB]给巧克力Chocolate Giving】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2984 练习SPFA,把FJ当做起点,求出到所有牛的最短路,再把两个牛的相加. #include <cs ...

  2. ListView与SimpleAdapter

    Adapter可以视作控件与数据之间的桥梁 对ListView做自由布局和填充需要使用到Adapter,这里我们采用SimpleAdapter. 简单来说: 1.定义一个ListItem,其数据结构是 ...

  3. 【办公】Microsoft Office 2016 专业增强版下载及永久激活-亲测分享

    Win7 x64,安装 Office 2016. 1. 下载 Office 2016,用迅雷网上下载飞快.(这里分享我的下载链接,2.39G用迅雷分分钟就下好了) 2. 按 此博客 ,安装激活工具. ...

  4. 学习MySql和MongoDB笔记

    首先了解下关系型数据库和非关系型数据库 关系型数据库 SQL关系型数据库采用了关系模式来组织数据,即关系模式为二维表格模型. 主要的数据库:SQL Server,Oracle,Mysql,Postgr ...

  5. 使用dva框架的总结

    最近的项目是react+dva+atd+webpack的一个后台项目,刚接触dva就感觉很喜欢,很简洁用着很爽. 关于使用redux中的一些问题 1.文件切换问题. redux的项目通常哟啊分为red ...

  6. Spring Boot应用的测试——Mockito

    Spring Boot应用的测试——Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试:Spring ...

  7. 简析--Java中常见的一些关键字的解析

    在Java开发中我们经常会用到一些关键字,关键字的定义很有意思"Java事先定义好的,具有特殊含义的单词",那么我们怎么来用好关键字呢?下面我们对一些常见的关键字进行分析和比较; ...

  8. python之selectors

    selectors是select模块的包装器,ptython文档建议大部分情况使用selectors而不是直接使用selectors 样例代码如下 # -*- coding: utf-8 -*- __ ...

  9. 编写可维护的JavaScript---事件处理

    在JavaScript应用中事件处理是非常重要的,所有的JavaScript都是通过事件绑定到UI上的. 1. 典型用法 当事件触发的时候,事件对象event会最为回调参数传入到事件处理程序中.eve ...

  10. LeetCode 简单 - 最大子序和(53)

    采用动态规划方法O(n) 设sum[i]为以第i个元素结尾且和最大的连续子数组.假设对于元素i,所有以它前面的元素结尾的子数组的长度都已经求得,那么以第i个元素结尾且和最大的连续子数组实际上,要么是以 ...