java8-lambda常用语法示例
常用语法示例:
public static void main(String[] args) {
        List<OrderInfo> orderInfoList = Lists.newArrayList();
        List<OperateInfo> operateInfoList = Lists.newArrayList();
        //operateInfoList转map(key:operateId  value:operateName)
        Map<Integer, String> operateMap = operateInfoList.stream().collect(Collectors.
                toMap(OperateInfo::getOperateId, OperateInfo::getOperateName, (x, y) -> x));
        //orderInfoList分组(key:type  value:List<OrderInfo>)
        Map<Integer, List<OrderInfo>> orderInfoGroup = orderInfoList.stream()
                .filter(order -> order.getType() != null)
                .collect(Collectors.groupingBy(OrderInfo::getType));
        List<List<OrderInfoResponse>> result = new ArrayList<>();
        orderInfoGroup.values().forEach(list -> {
            //根据orderId递减
            list = list.stream().sorted(Comparator.comparing(OrderInfo::getOrderId).reversed()).collect(Collectors.toList());
            //List<OrderInfo>转List<OrderInfoResponse>
            List<OrderInfoResponse> responses = list.stream().map(order -> {
                OrderInfoResponse response = new OrderInfoResponse();
                response.setOrderId(order.getOrderId());
                response.setTypeName(OrderTypeEnum.getNameByCode(order.getType()));
                response.setCreatorName(operateMap.get(order.getCreatorId()));
                return response;
            }).collect(Collectors.toList());
            result.add(responses);
        });
        //orderInfoList第一个type为TYPE1的对象
        OrderInfo orderInfo = orderInfoList.stream()
                .filter(order -> OrderTypeEnum.TYPE1.getCode().equals(order.getType()))
                .findFirst().orElse(null);
    }
Bean:
@Data
public class OrderInfo {
private Integer id;
private Integer type;
private Integer operatorId;
}
@Data
public class OrderInfoResponse {
private Integer id;
private Integer type;
private String typeName;
private Integer operatorId;
private String operatorName;
}
@Data
public class OperatorInfo {
private Integer operatorId;
private String operatorName;
}
public enum  OrderTypeEnum {
    TYPE1(1,"类型1"),
    TYPE2(2,"类型2");
    private Integer code;
    private String name;
    OrderTypeEnum(Integer code, String name) {
        this.code = code;
        this.name = name;
    }
    public Integer getCode() {
        return code;
    }
    public String getName() {
        return name;
    }
    public static String getNameByCode(Integer code) {
        for (OrderTypeEnum typeEnum : OrderTypeEnum.values()) {
            if (typeEnum.code.equals(code)) {
                return typeEnum.name;
            }
        }
        return "";
    }
}
util:
@Slf4j
public class Safes {
public static <T> List<T> of(List<T> source) {
return (List)Optional.ofNullable(source).orElse(Lists.newArrayListWithCapacity(0));
} public static <T> Set<T> of(Set<T> source) {
return (Set)Optional.ofNullable(source).orElse(Sets.newHashSetWithExpectedSize(0));
}
}
tips:
1,list集合为null时,list.stream()会抛异常。用 Safes.of() 方法将集合由null转为空集合。
java8-lambda常用语法示例的更多相关文章
- Java8  lambda表达式语法 1
		本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化.本文是该系列的第一篇, ... 
- Swift常用语法示例代码(二)
		此篇文章整理自我以前学习Swift时的一些练习代码,其存在的意义多是可以通过看示例代码更快地回忆Swift的主要语法. 如果你想系统学习Swift或者是Swift的初学者请绕路,感谢Github上Th ... 
- Swift常用语法示例代码(一)
		此篇文章整理自我以前学习Swift时的一些练习代码,其存在的意义多是可以通过看示例代码更快地回忆Swift的主要语法. 如果你想系统学习Swift或者是Swift的初学者请绕路,感谢Github上Th ... 
- java8  快速入门 lambda表达式 Java8 lambda表达式10个示例
		本文由 ImportNew - lemeilleur 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发 ... 
- Java8 lambda表达式10个示例
		Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Ja ... 
- Java8 lambda表达式10个示例<转>
		例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例.看一下Java 8之前的runna ... 
- Lambda表达式常用代码示例
		Lambda表达式常用代码示例 2017-10-24 目录 1 Lambda表达式是什么2 Lambda表达式语法3 函数式接口是什么 3.1 常用函数式接口4 Lambdas和Streams结合使 ... 
- Lambda表达式 简介 语法 示例 匿名内部类
		在AS中使用 Lambda 表达式 Demo地址:https://github.com/baiqiantao/MultiTypeTest.git Gradle(Project级别)中添加classpa ... 
- Java8初体验(一)lambda表达式语法
		感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解 ... 
随机推荐
- 点击回到顶部(jQuery)
			写这个点击回到顶部.我采用的是最简单的jQuery,的点击事件 和animate特效. html部分 <div class="pulltop"> <img sr ... 
- winfrom导出DataGridView为Excel方法
			声明:此方法需要电脑安装Excel软件 需要类库:Microsoft.Office.Interop.Excel.dll 可百度自行下载 方法代码: /// <summary> /// 导出 ... 
- K8s+jenkins实现提升效率 —— 一些小记录
			尝试下K8s + jenkins的组合,非常方便.在这里记录一下: kubernetes版本: 1.10 + deployment.yaml apiVersion: v1 kind: Service ... 
- C++标准模板库(STL)之Vector
			在C中,有很多东西需要自己实现.C++提供了标准模板库(Standard Template Libray,STL),其中封装了很多容器,不需要费力去实现它们的细节而直接调用函数来实现功能. 具体容器链 ... 
- Linux和windows 平台下启动和关闭mysql服务
			Linux平台下启动和关闭mysql服务 一.linux下查看mysql服务的两种方式: 方式一: [root@localhost bin]ps -ef|grep mysql 方式二: [root@l ... 
- Ubuntu gitlab安装文档及邮件通知提醒配置
			1.安装依赖包,运行命令 sudo apt-get install curl openssh-server ca-certificates postfix 2.由于gitlab官方源可能被“墙”,首先 ... 
- Oracle单机Rman笔记[6]---记一次oracle脱机异地还原
			系统情况介绍 正式环境:windows 2008 r2-32bit/ Oracle: Release 11.2.0.1.0 目标环境:windows 2012 Standard-64bit / Ora ... 
- CentOS 中安装和卸载 Emacs
			日志更新记录: [1] 增加 CentOS7.2 (内核版本:3.10.0-514.16.1.el7.x86_64)下Emacs25.2 的安装过程,它与本文的步骤完全一样. Emacs 版本:htt ... 
- Maskrcnn遇到的坑
			第一个要讲maskrcnn 中keras 升到2.1 然后 在线程问题上要把workers设置成1,是否使用线程设置成false 然后调用模型的时候要把模型和加载文件放到一个目录下 
- Unity中使用百度中文语音识别功能
			下面是API类 Asr.cs using System; using System.Collections; using System.Collections.Generic; using Unity ... 
