常用语法示例:

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常用语法示例的更多相关文章

  1. Java8 lambda表达式语法 1

    本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化.本文是该系列的第一篇, ...

  2. Swift常用语法示例代码(二)

    此篇文章整理自我以前学习Swift时的一些练习代码,其存在的意义多是可以通过看示例代码更快地回忆Swift的主要语法. 如果你想系统学习Swift或者是Swift的初学者请绕路,感谢Github上Th ...

  3. Swift常用语法示例代码(一)

    此篇文章整理自我以前学习Swift时的一些练习代码,其存在的意义多是可以通过看示例代码更快地回忆Swift的主要语法. 如果你想系统学习Swift或者是Swift的初学者请绕路,感谢Github上Th ...

  4. java8 快速入门 lambda表达式 Java8 lambda表达式10个示例

    本文由 ImportNew - lemeilleur 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发 ...

  5. Java8 lambda表达式10个示例

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

  6. Java8 lambda表达式10个示例<转>

    例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例.看一下Java 8之前的runna ...

  7. Lambda表达式常用代码示例

    Lambda表达式常用代码示例 2017-10-24 目录 1 Lambda表达式是什么2 Lambda表达式语法3 函数式接口是什么  3.1 常用函数式接口4 Lambdas和Streams结合使 ...

  8. Lambda表达式 简介 语法 示例 匿名内部类

    在AS中使用 Lambda 表达式 Demo地址:https://github.com/baiqiantao/MultiTypeTest.git Gradle(Project级别)中添加classpa ...

  9. Java8初体验(一)lambda表达式语法

    感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解 ...

随机推荐

  1. 微信小程序分包跳转主包页面

    由于公司项目比较多,我们事业部的微信小程序就在一个分包里.那分包页面要回到主包的首页,该怎么跳转呢,有以下两种方法 wx.switchTab(Object object) 跳转到 tabBar 页面, ...

  2. HTML中的置换元素和非置换元素

    我们都知道,行内元素不能够定义宽度和高度,但 img,input,button等标签作为行内元素却可以定义宽高,为什么呢?这就牵扯到了置换元素和非置换元素. 置换元素: w3c官方解释:“An ele ...

  3. 【PYTHON】a-start寻路算法

    本文章适合黄金段位的LOL大神,同样更适合出门在外没有导航,就找不到家的孩子. 在英雄联盟之中,当你和你的队友都苦苦修炼到十八级的时候,仍然与敌方阵营不分胜负,就在你刚买好装备已经神装的时候,你看见信 ...

  4. 织梦默认编辑器换成kindEditor实操教程

    织梦默认编辑是CKeditor,要想换成kindEditor编辑器,按如下步骤操作. 先看效果图: 首先下载打包好的 kindEditor_for_dedeCMS.ZIP,下载地址:https://d ...

  5. mysql5.7版本yum安装---redhat7.0

    1.官网下载yum包 [root@test01 test]# wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch ...

  6. 多条件分类统计group by 显示数目为0的类别

    CREATE TABLE #authorTable(author VARCHAR(50)) INSERT #authorTable SELECT 'peter' UNION SELECT '捌妮' U ...

  7. Vim 常用简单命令

    Vim中有三个模式,1.刚进入Vim画面的是命令模式,2. 在命令模式输入:进入末行模式, 3. 在命令模式输入 a或者i或者o进入编辑模式 在末行或者编辑模式中可以通过ESC回到命令模式 举例当前目 ...

  8. java8 简便的map和list操作

    如果你看到这篇文章,说明你对java繁琐的list和map操作产生了厌烦.在java中,频繁的操作基本上是获取到对象list,然后根据某个属性或者某几个属性的值,把list转为map,然后遍历其他对象 ...

  9. linux中pthread_join()与pthread_detach()

    1.linux线程执行和windows不同,pthread有两种状态joinable状态和unjoinable状态, 如果线程是joinable状态,当线程函数自己返回退出时或pthread_exit ...

  10. Arrlist的重要方法重写

    import java.util.Arrays; public class ArrayOperator { public static void main(String[] args) { // TO ...