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,所以文中肯定有错误和理解 ...
随机推荐
- SQL Pretty Printer for SSMS 很不错的SQL格式化插件
写SQL语句或者脚本时,看到凌乱的格式就头大了,于是决心找一款SQL语句格式化的工具. 功夫不负有心人还真的被我找到一款很好用,很方便的SQL Server插件:SQL Pretty Printer ...
- mysql 压缩版配置
1.解压之后可以将该文件夹改名,放到合适的位置,个人建议把文件夹改名为MySQL Server 5.6,放到C:\Program Files\MySQL路径中.当然你也可以放到自己想放的任意位置. 2 ...
- ie11兼容
项目里遇到ie11的问题, 1.控制台报:SCRIPT7002: XMLHttpRequest: 网络错误 0x80070005, 拒绝访问. 后来发现是由于传参过长,不应该用get请求,后改成pos ...
- Excel文件数据导入到后台保存倒数据库
后台代码数据解析: 方法一: (简单点) import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermo ...
- AngelToken钱包——值得投资与存币的钱包
Angeltoken有多好? Angeltoken到底值不值得我们投资? 简而言之 Angeltoken结合了:钱包+机器人,钱包+币币交易,钱包+宠物,钱包+结算代币等等. 它颠覆传统的运营和赚钱模 ...
- PPT母版制作
选择母版 首先,去iSlide官网下载iSlide,下载iSlide后,power point的菜单栏会自动出现iSilde图标(如下图). 打开iSlide这一栏,点击“图示库”,会弹出一个窗口,就 ...
- UVa 11389 - The Bus Driver Problem 难度:0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- 编码 decode & encode
import sys # python3 中字符编码默认为 utf-8 s = '你好' print(s) # utf-8 转为 gbk (s 默认为 unicode 所以可以直接 encode 成 ...
- Nginx配置文档
转https://www.cnblogs.com/hunttown/p/5759959.html
- python 在内网windows环境下pip三方包
我没用过Linux环境. 一般情况下,内网安装三方包,只需要在pypi找到对应python版本(2.7,3.6,...),系统位数(32位,64位)的whl包,cmd命令行cd进入相关目录,pip i ...