博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 8 - lambda
阅读量:7113 次
发布时间:2019-06-28

本文共 3118 字,大约阅读时间需要 10 分钟。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40254498/article/details/79217935

lambda

学习记录lambda,java 8 引入lambda将是对使用集合的一次重大改变,虽然看着很难懂,但是用着用着就好了,本文将用几个例子举例,本文参考的网上的一些例子。违删。新手挑战区。


lambda主要的表示形式

(params) -> expression

(params) -> statement
(params) -> { statements }

Example

() - > System.out.println(” Lambda Expressions”);
(int i, int j) -> System.out.println(i+j);

Example No.1

遍历数组等

List features = Arrays.asList("Lambdas", "Method", "Java", "Hello"); features.forEach(n -> System.out.println(n)); // 使用Java 8的方法引用更方便,方法引用由::双冒号操作符标示, features.forEach(System.out::println);

Example No.2

获取数字的个数、最小值、最大值、总和以及平均值

List
primes = Arrays.asList(2, 3, 5, 7, 11, 13, 17, 19, 23, 29); IntSummaryStatistics stats = primes.stream().mapToInt((x) -> x).summaryStatistics(); System.out.println("Highest prime number in List : " + stats.getMax()); System.out.println("Lowest prime number in List : " + stats.getMin()); System.out.println("Sum of all prime numbers : " + stats.getSum()); System.out.println("Average of all prime numbers : " + stats.getAverage());

结果:

Highest prime number in List : 29
Lowest prime number in List : 2
Sum of all prime numbers : 129
Average of all prime numbers : 12.9

Example No.3

map - reduce 例子

List
costBeforeTax = Arrays.asList(100, 200, 300, 400, 500);//这个是将每个数都变成浮点数 * 12costBeforeTax.stream().map((cost) -> cost + .12 * cost ).forEach(System.out::println);//这个是将每个数都变成浮点数 * 12 然后再算和double bill = costBeforeTax.stream().map((cost) -> cost + .12*cost).reduce((sum, cost) -> sum + cost).get();System.out.println("Total : " + bill);

结果:

112.0
224.0
336.0
448.0
560.0
Total : 1680.0

map---对列表的每个元素应用函数使用// 将字符串换成大写并用逗号链接起来List
G7 = Arrays.asList("USA", "Japan", "France", "Germany", "Italy", "U.K.","Canada");String G7Countries = G7.stream().map(x -> x.toUpperCase()).collect(Collectors.joining(", "));System.out.println(G7Countries);

Example No.4

匿名类

// Java 8之前:new Thread(new Runnable() {    @Override    public void run() {     System.out.println("Rock it!");     System.out.println("Hello world");    }}).start();//java8 支持  new Thread (() -> {      System.out.println("Rock it!");      System.out.println("hello world!");  }).start();

结果:

Rock it!
Hello world!

Example No.5

函数式接口Predicate

Java 8也添加了一个包,叫做 java.util.function。它包含了很多类,用来支持Java的函数式编程。其中一个便是Predicate,使用 java.util.function.Predicate 函数式接口以及lambda表达式,可以向API方法添加逻辑,用更少的代码支持更多的动态行为。下面是Java 8 Predicate 的例子,展示了过滤集合数据的多种常用方法。Predicate接口非常适用于做过滤。

// 甚至可以用and()、or()和xor()逻辑函数来合并Predicate,// 例如要找到所有以J开始,长度为四个字母的名字,你可以合并两个Predicate并传入List
languages = Arrays.asList("Java", "Scala", "C++", "Haskell", "Lisp","h","d","map","r");Predicate
startsWithJ = (n) -> n.startsWith("J");Predicate
fourLetterLong = (n) -> n.length() == 4;languages.stream() .filter(startsWithJ.and(fourLetterLong)) .forEach((n) -> System.out.print("nName, which starts with 'J' and four letter long is : " + n));

运行结果

Original List : [Java, Scala, C++, Haskell, Lisp, h, d, map, r], filtered list : [Java, Scala, C++, Haskell, Lisp, map]

你可能感兴趣的文章
nandflash擦除、写操作的状态判断
查看>>
Google Test Automation Conference 2013 Schedule
查看>>
文件版本paip.软件版本完善计划C426fromVC423
查看>>
latex测试
查看>>
python 调用解释器
查看>>
Fedora18下NetKeeper的使用
查看>>
AndroidUI 视图动画-缩放动画效果 (ScaleAnimation)
查看>>
北京Uber优步司机奖励政策(9月28日~10月4日)
查看>>
Unity判断网络连接类型
查看>>
卸载360企业版密码
查看>>
JSF request参数传递
查看>>
如何在servlet取得spring beans (autowired)(转)
查看>>
3-08. 栈模拟队列(25)(ZJU_PAT 模拟)
查看>>
每天一个linux命令(31): /etc/group文件详解
查看>>
JavaScript权威设计--jQuery,Ajax.animate,SVG(简要学习笔记二十)[完结篇]
查看>>
Chrome解决Adobe Flash Player因过期而遭到阻止
查看>>
XML DTD详解(转)
查看>>
spring-common.xml
查看>>
常用工具整理
查看>>
【转】Java集合框架综述
查看>>