java8学习
前言一、理解lambda二、初尝试lambda1.可以看这个知乎专栏2.函数式接口: 主要分为四种 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201007221716576.png#pic_center)
三、lambda进阶1手敲代码如下:
总结
前言
学习资源: https://www.yuque.com/pig4cloud/pig/muicu5
提示:以下是本篇文章正文内容,下面案例可供参考
一、理解lambda
触动点: 行为参数化 ( 与值参数化比较 )
二、初尝试lambda
1.可以看这个知乎专栏
2.函数式接口: 主要分为四种
三、lambda进阶
1手敲代码如下:
两点触动:
1. 使用实现接口 (Predicate ) 的方式替换if语句
2. 使用 (Function ) 接口进行类型转换
package com
.zero
.study2java8
.lambda
.lesson3
;
import com
.zero
.study2java8
.lambda
.lesson1
.Project
;
import java
.util
.ArrayList
;
import java
.util
.List
;
import java
.util
.function
.Function
;
import java
.util
.function
.Predicate
;
public class Lambdas {
public static List
<Project> buildData(){
List
<Project> data
= new ArrayList<>();
data
.add(Project
.builder().name("Blade").language("java").star(3500).build());
data
.add(Project
.builder().name("Tale").language("java").star(2600).build());
data
.add(Project
.builder().name("Elves").language("java").star(200).build());
return data
;
}
public static void main(String
[] args
) {
List
<Project> projects
= buildData();
List
<String> names
= getNames(projects
, project
-> project
.getStar() > 1000);
List
<String> names1
= getNames(projects
, project
-> project
.getStar() > 1000, Project
::getLanguage
);
List
<Integer> stars
= getNames(projects
, project
-> project
.getStar() > 1000, ProjectFunction
.buildStarFunction());
System
.out
.println(names1
);
}
public static List
<String> getNames(List
<Project> projects
, Predicate
<Project> predicate
){
List
<String> names
= new ArrayList<>();
for (Project project
: projects
) {
if(predicate
.test(project
)){
names
.add(project
.getName());
}
}
return names
;
}
public static <R> List
<R> getNames(List
<Project> projects
, Predicate
<Project> predicate
, Function
<Project , R> function
){
List
<R> names
= new ArrayList<>();
for (Project project
: projects
) {
if(predicate
.test(project
)){
names
.add(function
.apply(project
));
}
}
return names
;
}
}
interface ProjectFunction<R> extends Function<Project , R>{
static ProjectFunction
<Integer> buildStarFunction(){
return Project
::getStar
;
}
}
总结
学好lambda是为了学习Stream打下基础 . 原学习资料有一个不好的地方, 就是代码托管在github . 建议在gitee也放一份.