代替匿名内部类
before
@Test
public void oldRunable() {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(\"The old runable now is using!\");
}
}).start();
}
after
@Test
public void runable() {
new Thread(() -> System.out.println(\"It\'s a lambda function!\")).start();
}
output
The old runable now is using!
It\'s a lambda function!
对集合进行迭代
@Test
public void iterTest() {
List<String> languages = Arrays.asList(\"java\",\"scala\",\"python\");
//before java8
for(String each:languages) {
System.out.println(each);
}
//after java8
languages.forEach(x -> System.out.println(x));
languages.forEach(System.out::println);
}
实现map
@Test
public void mapTest() {
List<Double> cost = Arrays.asList(10.0, 20.0,30.0);
cost.stream().map(x -> x + x*0.05).forEach(x -> System.out.println(x));
}
reduce的两个参数,第一个是上一层执行的中间结果,第二个参数是上一步执行的结果,传输到本步骤
实现map与reduce
@Test
public void mapReduceTest() {
List<Double> cost = Arrays.asList(10.0, 20.0,30.0);
double allCost = cost.stream().map(x -> x+x*0.05).reduce((sum,x) -> sum + x).get();
System.out.println(allCost);
}
与函数式接口Predicate配合
public static void filterTest(List<String> languages, Predicate<String> condition) {
languages.stream().filter(x -> condition.test(x)).forEach(x -> System.out.println(x + \" \"));
}
public static void main(String[] args) {
List<String> languages = Arrays.asList(\"Java\",\"Python\",\"scala\",\"Shell\",\"R\");
System.out.println(\"Language starts with J: \");
filterTest(languages,x -> x.startsWith(\"J\"));
System.out.println(\"\\nLanguage ends with a: \");
filterTest(languages,x -> x.endsWith(\"a\"));
System.out.println(\"\\nAll languages: \");
filterTest(languages,x -> true);
System.out.println(\"\\nNo languages: \");
filterTest(languages,x -> false);
System.out.println(\"\\nLanguage length bigger three: \");
filterTest(languages,x -> x.length() > 4);
}
output
Language starts with J:
Java
Language ends with a:
Java
scala
All languages:
Java
Python
scala
Shell
R
No languages:
Language length bigger three:
Python
scala
Shell
继续阅读与本文标签相同的文章
下一篇 :
2018年度总结
-
基于 APIGateway 打造生产级别的 Knative 服务
2026-05-18栏目: 教程
-
棱镜丨圆通回应“承诺达”解散:由直营模式改回加盟商授权经营
2026-05-18栏目: 教程
-
自从有了它,我在微信上吵架就没输过!
2026-05-18栏目: 教程
-
OTT终端不断地在全球范围扩展,未来万物互联不再是梦想
2026-05-18栏目: 教程
-
2019云栖大会 | 开源数据库界大神集体现身,邀你共同感受“开源魅力”
2026-05-18栏目: 教程
