jdk8 新特性stream().map()
1.大写字符串列表
1.1 简单的Java示例将Strings列表转换为大写
- package com.mkyong.java8;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.stream.Collectors;
- public class TestJava8 {
- public static void main(String[] args) {
- List<String> alpha = Arrays.asList("a", "b", "c", "d");
- //Before Java8
- List<String> alphaUpper = new ArrayList<>();
- for (String s : alpha) {
- alphaUpper.add(s.toUpperCase());
- }
- System.out.println(alpha); //[a, b, c, d]
- System.out.println(alphaUpper); //[A, B, C, D]
- // Java 8
- List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.toList());
- System.out.println(collect); //[A, B, C, D]
- // Extra, streams apply to any data type.
- List<Integer> num = Arrays.asList(1,2,3,4,5);
- List<Integer> collect1 = num.stream().map(n -> n * 2).collect(Collectors.toList());
- System.out.println(collect1); //[2, 4, 6, 8, 10]
- }
- }
2.对象列表 - >字符串列表
2.1 name从staff对象列表中获取所有值
Staff.java
- package com.mkyong.java8;
- import java.math.BigDecimal;
- public class Staff {
- private String name;
- private int age;
- private BigDecimal salary;
- //...
- }
TestJava8.java
- package com.mkyong.java8;
- import java.math.BigDecimal;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.stream.Collectors;
- public class TestJava8 {
- public static void main(String[] args) {
- List<Staff> staff = Arrays.asList(
- new Staff("mkyong", 30, new BigDecimal(10000)),
- new Staff("jack", 27, new BigDecimal(20000)),
- new Staff("lawrence", 33, new BigDecimal(30000))
- );
- //Before Java 8
- List<String> result = new ArrayList<>();
- for (Staff x : staff) {
- result.add(x.getName());
- }
- System.out.println(result); //[mkyong, jack, lawrence]
- //Java 8
- List<String> collect = staff.stream().map(x -> x.getName()).collect(Collectors.toList());
- System.out.println(collect); //[mkyong, jack, lawrence]
- }
3. 对象列表 - >其他对象列表
3.1 此示例说明如何将staff对象列表转换为对象列表StaffPublic
Staff.java
- package com.mkyong.java8;
- import java.math.BigDecimal;
- public class Staff {
- private String name;
- private int age;
- private BigDecimal salary;
- //...
- }
StaffPublic.java
- package com.mkyong.java8;
- public class StaffPublic {
- private String name;
- private int age;
- private String extra;
- //...
- }
3.2 Java 8之前
BeforeJava8.java
- package com.mkyong.java8;
- import java.math.BigDecimal;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- public class BeforeJava8 {
- public static void main(String[] args) {
- List<Staff> staff = Arrays.asList(
- new Staff("mkyong", 30, new BigDecimal(10000)),
- new Staff("jack", 27, new BigDecimal(20000)),
- new Staff("lawrence", 33, new BigDecimal(30000))
- );
- List<StaffPublic> result = convertToStaffPublic(staff);
- System.out.println(result);
- }
- private static List<StaffPublic> convertToStaffPublic(List<Staff> staff) {
- List<StaffPublic> result = new ArrayList<>();
- for (Staff temp : staff) {
- StaffPublic obj = new StaffPublic();
- obj.setName(temp.getName());
- obj.setAge(temp.getAge());
- if ("mkyong".equals(temp.getName())) {
- obj.setExtra("this field is for mkyong only!");
- }
- result.add(obj);
- }
- return result;
- }
- }
输出:
- [
- StaffPublic{name='mkyong', age=30, extra='this field is for mkyong only!'},
- StaffPublic{name='jack', age=27, extra='null'},
- StaffPublic{name='lawrence', age=33, extra='null'}
- ]
3.3 Java 8的例子
NowJava8.java
- package com.mkyong.java8;
- package com.hostingcompass.web.java8;
- import java.math.BigDecimal;
- import java.util.Arrays;
- import java.util.List;
- import java.util.stream.Collectors;
- public class NowJava8 {
- public static void main(String[] args) {
- List<Staff> staff = Arrays.asList(
- new Staff("mkyong", 30, new BigDecimal(10000)),
- new Staff("jack", 27, new BigDecimal(20000)),
- new Staff("lawrence", 33, new BigDecimal(30000))
- );
- // convert inside the map() method directly.
- List<StaffPublic> result = staff.stream().map(temp -> {
- StaffPublic obj = new StaffPublic();
- obj.setName(temp.getName());
- obj.setAge(temp.getAge());
- if ("mkyong".equals(temp.getName())) {
- obj.setExtra("this field is for mkyong only!");
- }
- return obj;
- }).collect(Collectors.toList());
- System.out.println(result);
- }
- }
输出:
- [
- StaffPublic{name='mkyong', age=30, extra='this field is for mkyong only!'},
- StaffPublic{name='jack', age=27, extra='null'},
- StaffPublic{name='lawrence', age=33, extra='null'}
- ]
jdk8 新特性stream().map()的更多相关文章
- jdk8新特性-stream
一.什么是流stream 1.可理解为高级版本的 Iterator 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的. 2.单向,不可往复 数据只能遍历一次,遍历过一次后即用尽了,就好比 ...
- JDK8新特性---stream流
项目上用到了stream流,找篇blog,转载一下,介绍下Stream流的用法. 1 流概述 流是 JDK8 新增的成员,允许以声明性方式处理数据集合,可以把 Stream 流看作是遍历数据集合的一 ...
- jdk8的特性stream().map()
转: https://blog.csdn.net/sanchan/article/details/70753645 java8的optional的使用: http://www.jdon.com/ide ...
- 【记录】【java】JDK8新特性Stream方式遍历集合
由于是以流方式,所以怎么操作也不改变原来的集合 1.普通遍历forEach List<String> list = new ArrayList(); list.add("a&qu ...
- jdk8新特性Stream
Stream的方法描述与实例 1,filter 过滤 Person p1 = new Person(); p1.setName("P1"); p1.setAge(10); Per ...
- JDK8新特性关于Stream流
在Java1.8之前还没有stream流式算法的时候,我们要是在一个放有多个User对象的list集合中,将每个User对象的主键ID取出,组合成一个新的集合,首先想到的肯定是遍历,如下: 1 2 3 ...
- JDK8新特性:使用stream、Comparator和Method Reference实现集合的优雅排序
大家对java接口Comparator和Comparable都不陌生,JDK8里面Comparable还和以前一样,没有什么改动:但是Comparator在之前基础上增加了很多static和defau ...
- JDK8新特性一览
转载自:http://blog.csdn.net/qiubabin/article/details/70256683 官方新特性说明地址 Jdk8新特性.png 下面对几个常用的特性做下重点说明. 一 ...
- 一次电话Java面试的问题总结(JDK8新特性、哈希冲突、HashMap原理、线程安全、Linux查询命令、Hadoop节点)
面试涉及问题含有: Java JDK8新特性 集合(哈希冲突.HashMap的原理.自动排序的集合TreeSet) 多线程安全问题 String和StringBuffer JVM 原理.运行流程.内部 ...
随机推荐
- 【luogu P2984 [USACO10FEB]给巧克力Chocolate Giving】 题解
题目链接:https://www.luogu.org/problemnew/show/P2984 练习SPFA,把FJ当做起点,求出到所有牛的最短路,再把两个牛的相加. #include <cs ...
- ListView与SimpleAdapter
Adapter可以视作控件与数据之间的桥梁 对ListView做自由布局和填充需要使用到Adapter,这里我们采用SimpleAdapter. 简单来说: 1.定义一个ListItem,其数据结构是 ...
- 【办公】Microsoft Office 2016 专业增强版下载及永久激活-亲测分享
Win7 x64,安装 Office 2016. 1. 下载 Office 2016,用迅雷网上下载飞快.(这里分享我的下载链接,2.39G用迅雷分分钟就下好了) 2. 按 此博客 ,安装激活工具. ...
- 学习MySql和MongoDB笔记
首先了解下关系型数据库和非关系型数据库 关系型数据库 SQL关系型数据库采用了关系模式来组织数据,即关系模式为二维表格模型. 主要的数据库:SQL Server,Oracle,Mysql,Postgr ...
- 使用dva框架的总结
最近的项目是react+dva+atd+webpack的一个后台项目,刚接触dva就感觉很喜欢,很简洁用着很爽. 关于使用redux中的一些问题 1.文件切换问题. redux的项目通常哟啊分为red ...
- Spring Boot应用的测试——Mockito
Spring Boot应用的测试——Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试:Spring ...
- 简析--Java中常见的一些关键字的解析
在Java开发中我们经常会用到一些关键字,关键字的定义很有意思"Java事先定义好的,具有特殊含义的单词",那么我们怎么来用好关键字呢?下面我们对一些常见的关键字进行分析和比较; ...
- python之selectors
selectors是select模块的包装器,ptython文档建议大部分情况使用selectors而不是直接使用selectors 样例代码如下 # -*- coding: utf-8 -*- __ ...
- 编写可维护的JavaScript---事件处理
在JavaScript应用中事件处理是非常重要的,所有的JavaScript都是通过事件绑定到UI上的. 1. 典型用法 当事件触发的时候,事件对象event会最为回调参数传入到事件处理程序中.eve ...
- LeetCode 简单 - 最大子序和(53)
采用动态规划方法O(n) 设sum[i]为以第i个元素结尾且和最大的连续子数组.假设对于元素i,所有以它前面的元素结尾的子数组的长度都已经求得,那么以第i个元素结尾且和最大的连续子数组实际上,要么是以 ...