lambda表达式

Posted wanhua.wu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lambda表达式相关的知识,希望对你有一定的参考价值。

lambda表达式有个限制,那就是只能引用 final 或 final 局部变量,这就是说不能在lambda内部修改定义在域外的变量。

Compile time error : local variables referenced from a lambda expression must be final or effectively final

1,List转Map

List<B2bUserVO> allUserList = new ArrayList<>();
Map<String, B2bUserVO> map = allUserList.stream().collect(Collectors.toMap(B2bUserVO::getId, (p) -> p));

2,List转List

List<String> userIdList = Lists.newArrayList();
List<SubUserVO> subUserVOList = new ArrayList<>();
subUserVOList.forEach(e -> userIdList.add(e.getId()));

3,条件过滤

List<String> strList = new ArrayList<>();
List<String> filtered = strList.stream().filter(x -> x.length()> 2).collect(Collectors.toList());

4,List转拼接字符串

List<String> G7 = Arrays.asList("USA", "Japan", "France", "Germany", "Italy", "U.K.","Canada");
String G7Countries = G7.stream().map(x -> x.toUpperCase()).collect(Collectors.joining(", "));

5,List的最大,小,求和,平均值计算

List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13, 17, 19, 23, 29);
IntSummaryStatistics stats = primes.stream().mapToInt((x) -> x).summaryStatistics();
System.out.println("最大值 : " + stats.getMax());
System.out.println("最小值 : " + stats.getMin());
System.out.println("总   和 : " + stats.getSum());
System.out.println("平均值 : " + stats.getAverage());

6,List迭代

List<OrderItem> itemList = new ArrayList<>();
itemList.stream().forEach(item -> {
    System.out.println(item.getId());
});    

  

  

  

  

  

以上是关于lambda表达式的主要内容,如果未能解决你的问题,请参考以下文章

JAVA由一个将JSONArray转成Map的需求引发的lambda语法的学习

函数式编程

C# fun

Lambda表达式

Lambda表达式

Lambda表达式常用代码示例