一、遍历循环

 /**
* @author jiaqing.xu@hand-china.com
* @version 1.0
* @name
* @description 循环遍历
* @date 2018/7/13
*/
public class test1 {
public static void main(String[] args) {
String[] atp = {
"b",
"a",
"c",
"d",
"e",
"f",
"g",
"h"};
List<String> players = Arrays.asList(atp); // 直接对list进行循环输出
players.forEach((p) -> System.out.print(p + "; "));
System.out.println("\n");
//循环输出带换行符,方法引用使用双冒号
players.forEach(System.out::println); }
}

二、数据过滤

 /**
* @author jiaqing.xu@hand-china.com
* @version 1.0
* @name
* @description 数据过滤
* @date 2018/7/13
*/
public class test2 {
public static void main(String args[]) {
List languages = Arrays.asList("Java", "Scala", "C++", "Haskell", "Lisp");
//打印以J开头的字符串
System.out.println("Print all languages :");
filter1(languages, (str) -> str.toString().startsWith("J"));
//条件恒为假
System.out.println("Print no language : ");
filter(languages, (str) -> false);
//混合过滤条件
System.out.println("...");
filter3(languages);
} //传统过滤
public static void filter(List<String> names, Predicate condition) {
for (String name : names) {
if (condition.test(name)) {
System.out.println(name + " ");
}
}
} //以lambda方式过滤
public static void filter1(List names, Predicate condition) {
names.stream().filter((name) -> (condition.test(name))).forEach((name) -> System.out.println(name + " "));
} public static void filter3(List names) {
//第一个规则是以J开头
Predicate<String> startsWithJ = (n) -> n.startsWith("J");
//第二个规则是长度为4
Predicate<String> fourLetterLong = (n) -> n.length() == 4;
names.stream().filter(startsWithJ.and(fourLetterLong)).forEach((n) -> System.out.println("The result is:" + n));
}
}

三、Map和Reduce函数计算

 /**
* @author jiaqing.xu@hand-china.com
* @version 1.0
* @name
* @description map和reduce 函数计算
* @date 2018/7/13
*/
public class test3 {
public static void main(String[] args) {
// With Lambda expression:
//Map用于函数计算,为集合中的每个元素增加一定的数值
List costBeforeTax = Arrays.asList(100, 200, 300, 400, 500);
costBeforeTax.stream().map((cost) -> (Integer) cost + .12 * (Integer) cost).forEach(System.out::println); //reduce 类似sql中的sum avg count
List costBeforeTax2 = Arrays.asList(100, 200, 300, 400, 500);
Object bill = costBeforeTax2.stream()
.map((cost) -> (Integer) cost + .12 * (Integer) cost)
.reduce((sum, cost) -> (Double) sum + (Double) cost)
.get();
System.out.println("Total : " + bill); //应用函数将字符串转换为大写形式并用逗号拼接
List<String> 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); //计算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("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());
}
}

Java8新特性——lambda函数式编程的更多相关文章

  1. [译]java8新特性:函数式编程(functional programming)的优点

    Java8引入了函数式编程,他对java是一个极大的扩展.Java从此不在是一个单纯的面向对象语言,现在他同时混合了函数式编程.这是巨大的改变,需要我们调整面对对象的编程习惯,以适应这些变化. 但是为 ...

  2. Java8新特性:函数式编程

    1. 概述 函数式编程学习目的: 能够看懂公司里的代码 大数据量下处理集合效率更高 代码可读性高 消灭嵌套地狱 函数式编程思想: 面向对象思想需要关注用什么对象完成什么事情.而函数式编程思想就类似于我 ...

  3. 乐字节-Java8新特性之函数式接口

    上一篇小乐带大家学过 Java8新特性-Lambda表达式,那什么时候可以使用Lambda?通常Lambda表达式是用在函数式接口上使用的.从Java8开始引入了函数式接口,其说明比较简单:函数式接口 ...

  4. Java8新特性-Lambda表达式是什么?

    目录 前言 匿名内部类 函数式接口 和 Lambda表达式语法 实现函数式接口并使用Lambda表达式: 所以Lambda表达式是什么? 实战应用 总结 前言 Java8新特性-Lambda表达式,好 ...

  5. 乐字节-Java8新特性-Lambda表达式

    上一篇文章我们了解了Java8新特性-接口默认方法,接下来我们聊一聊Java8新特性之Lambda表达式. Lambda表达式(也称为闭包),它允许我们将函数当成参数传递给某个方法,或者把代码本身当作 ...

  6. java8新特性——Lambda表达式

    上文中简单介绍了一下java8得一些新特性,与优点,也是为本次学习java8新特性制定一个学习的方向,后面几篇会根据上文中得新特性一一展开学习.本文就从java8新特性中比较重要的Lambda表达式开 ...

  7. Java8 新特性 Lambda & Stream API

    目录 Lambda & Stream API 1 Lambda表达式 1.1 为什么要使用lambda表达式 1.2 Lambda表达式语法 1.3 函数式接口 1.3.1 什么是函数式接口? ...

  8. JDK 8 新特性之函数式编程 → Stream API

    开心一刻 今天和朋友们去K歌,看着这群年轻人一个个唱的贼嗨,不禁感慨道:年轻真好啊! 想到自己年轻的时候,那也是拿着麦克风不放的人 现在的我没那激情了,只喜欢坐在角落里,默默的听着他们唱,就连旁边的妹 ...

  9. java8新特性Lambda和Stream

    Java8出来已经4年,但还是有很多人用上了jdk8,但并没用到里面的新东西,那不就等于没用?jdk8有许多的新特性,详细可看下面脑图 我只讲两个最重要的特性Lambda和Stram,配合起来用可以极 ...

随机推荐

  1. 【数据库】MySQL 函数大全包含示例(涵盖了常用如时间、数字、字符串处理、数据流函数的和一些冷门的)

    ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/mysqlFunctionDesc 数学函数(Mathem ...

  2. JSONP跨域的script标签请求为什么不受同源策略的限制?

    在复习跨域的时候,复习到了JSONP跨域,大家都知道JSONP跨域是通过动态创建script标签,然后通过其src属性进行跨域请求的,前端需要一个数据处理的回调函数,而服务端需要配合执行回调函数,放入 ...

  3. vue 自动化路由实现

    1.需求描述 在写vue的项目中,一般情况下我们每添加一个新页面都得添加一个新路由.为此我们在项目中会专门的一个文件夹来管理路由,如下图所示 那么有没有一种方案,能够实现我们在文件夹中新建了一个vue ...

  4. 【selenium】- webdriver常见元素定位(中)

    本文由小编根据慕课网视频亲自整理,转载请注明出处和作者. 1.By.tagName 遇到hidden就break,继续下一个循环. 2.By.linkText 对上图中的“糯米”进行定位: 3.By. ...

  5. JMeter更改语言为英文

    1. 进入目录apache-jmeter-2.13\bin 2. 打开jmeter.properties 3. 取消“language=en”前的注释 4. 重新打开JMeter,即可看到语言已经变成 ...

  6. hdu-6701 Make Rounddog Happy

    题目链接 Make Rounddog Happy Problem Description Rounddog always has an array a1,a2,⋯,an in his right po ...

  7. POJ-3259 Wormholes (ballman_ford 判负环)

    ballman_ford 是对单源点到任意点最短路的处理方法(可以含负权边). 对所有边进行n-1次循环,(n为点得个数),如果此时源点到这条边终点的距离 大于 源点到这条边起点的距离加上路得权值就进 ...

  8. CodeForces 982 D Shark

    Shark 题意:一个研究员观察了一条鲨鱼n天的运动,然后这条鲨鱼他只会往前走,不会回到去过的地方,现在有一个k,,如果鲨鱼当天游过的距离 >= k, 代表的鲨鱼在这天会前往下一个地点,现在求鲨 ...

  9. ZOJ 3876 May Day Holiday

    As a university advocating self-learning and work-rest balance, Marjar University has so many days o ...

  10. ASP.NET MVC实现依赖注入

    在java的spring中有自动注入功能,使得代码变得更加简洁灵活,所以想把这个功能移植到c#中,接下来逐步分析实现过程 1.使用自动注入场景分析 在asp.net mvc中,无论是什么代码逻辑分层, ...