Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_java
提交
a1cac26d
S
skill_tree_java
项目概览
CSDN 技术社区
/
skill_tree_java
通知
43
Star
8
Fork
4
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_java
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a1cac26d
编写于
11月 13, 2021
作者:
M
Mars Liu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
lambda and high order
上级
65e6fb7c
变更
18
显示空白变更内容
内联
并排
Showing
18 changed file
with
287 addition
and
27 deletion
+287
-27
data/3.Java高阶/1.通过行为参数化传递代码/1.行为参数化/config.json
data/3.Java高阶/1.通过行为参数化传递代码/1.行为参数化/config.json
+0
-8
data/3.Java高阶/1.通过行为参数化传递代码/2.简写/config.json
data/3.Java高阶/1.通过行为参数化传递代码/2.简写/config.json
+0
-8
data/3.Java高阶/1.通过行为参数化传递代码/3.高序函数/config.json
data/3.Java高阶/1.通过行为参数化传递代码/3.高序函数/config.json
+0
-9
data/3.Java高阶/1.通过行为参数化传递代码/3.高序函数/double.md
data/3.Java高阶/1.通过行为参数化传递代码/3.高序函数/double.md
+0
-0
data/3.Java高阶/1.通过行为参数化传递代码/config.json
data/3.Java高阶/1.通过行为参数化传递代码/config.json
+5
-1
data/3.Java高阶/1.通过行为参数化传递代码/filter.json
data/3.Java高阶/1.通过行为参数化传递代码/filter.json
+7
-0
data/3.Java高阶/1.通过行为参数化传递代码/filter.md
data/3.Java高阶/1.通过行为参数化传递代码/filter.md
+56
-0
data/3.Java高阶/1.通过行为参数化传递代码/map.json
data/3.Java高阶/1.通过行为参数化传递代码/map.json
+0
-0
data/3.Java高阶/1.通过行为参数化传递代码/map.md
data/3.Java高阶/1.通过行为参数化传递代码/map.md
+49
-0
data/3.Java高阶/1.通过行为参数化传递代码/sum.json
data/3.Java高阶/1.通过行为参数化传递代码/sum.json
+7
-0
data/3.Java高阶/1.通过行为参数化传递代码/sum.md
data/3.Java高阶/1.通过行为参数化传递代码/sum.md
+41
-0
data/3.Java高阶/2.Lambda表达式/config.json
data/3.Java高阶/2.Lambda表达式/config.json
+5
-1
data/3.Java高阶/2.Lambda表达式/handler.json
data/3.Java高阶/2.Lambda表达式/handler.json
+7
-0
data/3.Java高阶/2.Lambda表达式/handler.md
data/3.Java高阶/2.Lambda表达式/handler.md
+58
-0
data/3.Java高阶/2.Lambda表达式/lambda.json
data/3.Java高阶/2.Lambda表达式/lambda.json
+7
-0
data/3.Java高阶/2.Lambda表达式/lambda.md
data/3.Java高阶/2.Lambda表达式/lambda.md
+45
-0
data/3.Java高阶/2.Lambda表达式/sam.json
data/3.Java高阶/2.Lambda表达式/sam.json
+0
-0
data/3.Java高阶/2.Lambda表达式/sam.md
data/3.Java高阶/2.Lambda表达式/sam.md
+0
-0
未找到文件。
data/3.Java高阶/1.通过行为参数化传递代码/1.行为参数化/config.json
已删除
100644 → 0
浏览文件 @
65e6fb7c
{
"node_id"
:
"java-3a05a505cd514579a52321f0c945d577"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[],
"title"
:
"行为参数化"
}
\ No newline at end of file
data/3.Java高阶/1.通过行为参数化传递代码/2.简写/config.json
已删除
100644 → 0
浏览文件 @
65e6fb7c
{
"node_id"
:
"java-b121d453fc544e188b9ad50476c22f59"
,
"keywords"
:
[],
"children"
:
[
],
"export"
:
[
"sam.json"
]
}
\ No newline at end of file
data/3.Java高阶/1.通过行为参数化传递代码/3.高序函数/config.json
已删除
100644 → 0
浏览文件 @
65e6fb7c
{
"node_id"
:
"java-db33d9c7f2004cdbbc058254fe536ace"
,
"keywords"
:
[],
"children"
:
[
],
"export"
:
[
"double.json"
],
"title"
:
"真实的例子"
}
\ No newline at end of file
data/3.Java高阶/1.通过行为参数化传递代码/3.高序函数/double.md
已删除
100644 → 0
浏览文件 @
65e6fb7c
data/3.Java高阶/1.通过行为参数化传递代码/config.json
浏览文件 @
a1cac26d
...
@@ -2,6 +2,9 @@
...
@@ -2,6 +2,9 @@
"node_id"
:
"java-fb711fb0dfbb40db974476ea2d9faf9d"
,
"node_id"
:
"java-fb711fb0dfbb40db974476ea2d9faf9d"
,
"keywords"
:
[],
"keywords"
:
[],
"children"
:
[],
"children"
:
[],
"export"
:
[],
"export"
:
[
"map.json"
,
"sum.json"
],
"title"
:
"通过行为参数化传递代码"
"title"
:
"通过行为参数化传递代码"
}
}
\ No newline at end of file
data/3.Java高阶/1.通过行为参数化传递代码/filter.json
0 → 100644
浏览文件 @
a1cac26d
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"double.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/3.Java高阶/1.通过行为参数化传递代码/filter.md
0 → 100644
浏览文件 @
a1cac26d
# 过滤
Stream API支持 filter 方法,接受一段过滤代码,使得调用者可以传入过滤规则,返回过滤后的新的 Stream,那么下列调用代码不正确的是:
## 答案
```
java
IntStream
stream
=
IntStream
.
range
(
0
,
100
);
return
stream
.
filter
(
x
%
2
==
0
);
```
## 选项
### 标准的 lambda 调用
```
java
IntStream
stream
=
IntStream
.
range
(
0
,
100
);
return
stream
.
filter
(
x
->
x
%
2
==
0
);
```
### lambda 的完整形式
```
java
IntStream
stream
=
IntStream
.
range
(
0
,
100
);
return
stream
.
filter
(
x
->{
return
x
%
2
==
0
;
});
```
### 对象方法引用
```
java
IntStream
stream
=
IntStream
.
range
(
0
,
100
);
return
stream
.
filter
(
this
::
isEven
);
```
### 类型方法引用
```
java
IntStream
stream
=
IntStream
.
range
(
0
,
100
);
return
stream
.
filter
(
App:
:
isEven
);
```
### 可以显式使用完整的函数对象定义
```
java
IntStream
stream
=
IntStream
.
range
(
0
,
100
);
IntPredicate
filter
=
new
IntPredicate
()
{
@Override
public
boolean
test
(
int
value
)
{
return
value
%
2
==
0
;
}
};
return
stream
.
filter
(
filter
);
```
\ No newline at end of file
data/3.Java高阶/1.通过行为参数化传递代码/
3.高序函数/double
.json
→
data/3.Java高阶/1.通过行为参数化传递代码/
map
.json
浏览文件 @
a1cac26d
文件已移动
data/3.Java高阶/1.通过行为参数化传递代码/map.md
0 → 100644
浏览文件 @
a1cac26d
# 翻倍操作
下面哪个选项可以从
`Stream<Integer> stream`
构造一个新的 List
<Ineger>
对象,使其包含stream中每个元素翻倍后的结果:
## template
```
java
import
java.util.stream.Stream
;
import
java.util.stream.IntStream
;
public
class
App
{
public
void
main
(
String
[]
args
){
Stream
<
Integer
>
stream
=
IntStream
.
range
(
0
,
100
).
boxed
();
$code
for
(
var
item
:
result
){
System
.
out
.
println
(
item
);
}
}
}
```
## 答案
```
java
List
<
Integer
>
result
=
stream
.
map
(
x
->
x
*
2
).
collect
(
Collectors
.
toList
());
```
## 选项
### 没有变换为 List
```
java
List
<
Integer
>
result
=
stream
.
map
(
x
->
x
*
2
);
```
### lambda 格式错误
```
java
List
<
Integer
>
result
=
stream
.
map
(*
2
).
collect
(
Collectors
.
toList
());
```
### 错误的使用了 foreach
```
java
List
<
Integer
>
result
=
stream
.
foreach
(
item
->
{
return
item
*
2
});
```
data/3.Java高阶/1.通过行为参数化传递代码/sum.json
0 → 100644
浏览文件 @
a1cac26d
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"sum.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/3.Java高阶/1.通过行为参数化传递代码/sum.md
0 → 100644
浏览文件 @
a1cac26d
# 求和
下面代码对整数流求和,其中有错的是
## 答案
```
java
Stream
<
Integer
>
stream
=
IntStream
.
range
(
0
,
100
).
boxed
();
return
stream
.
mapToInt
(
x
->
x
);
```
## 选项
### 标准库方法
```
java
Stream
<
Integer
>
stream
=
IntStream
.
range
(
0
,
100
).
boxed
();
return
stream
.
sum
();
```
### 显式调用 simmingInt 方法,可以定义一些复杂的处理逻辑
```
java
var
collector
=
Collectors
.<
Integer
>
summingInt
(
x
->
x
);
return
stream
.
collect
(
collector
);
```
### 也可以封装到一个朴素的方法中,作为隐式简写
```
java
var
collector
=
Collectors
.<
Integer
>
summingInt
(
this
::
identity
);
return
stream
.
collect
(
collector
);
```
### 也可以封装到一个朴素的方法中,作为隐式简写
```
java
var
collector
=
Collectors
.<
Integer
>
summingInt
(
App:
:
identity
);
return
stream
.
collect
(
collector
);
```
\ No newline at end of file
data/3.Java高阶/2.Lambda表达式/config.json
浏览文件 @
a1cac26d
...
@@ -2,6 +2,9 @@
...
@@ -2,6 +2,9 @@
"node_id"
:
"java-a3b60740abe74bb8a6c16dec381d31c4"
,
"node_id"
:
"java-a3b60740abe74bb8a6c16dec381d31c4"
,
"keywords"
:
[],
"keywords"
:
[],
"children"
:
[],
"children"
:
[],
"export"
:
[],
"export"
:
[
"lambda.json"
,
"sam.json"
],
"title"
:
"Lambda表达式"
"title"
:
"Lambda表达式"
}
}
\ No newline at end of file
data/3.Java高阶/2.Lambda表达式/handler.json
0 → 100644
浏览文件 @
a1cac26d
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"handler.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/3.Java高阶/2.Lambda表达式/handler.md
0 → 100644
浏览文件 @
a1cac26d
# 函数式的参数
下面这个代码所定义的函数,用哪一种代码调用会出错?
```
java
import
java.util.function.Function
;
public
class
App
{
public
<
T
,
R
>
product
(
Function
<
T
,
R
>
consumer
)
{
// 这里有一段代码生成了 T value 变量
return
consumer
(
value
);
}
// 省略其它代码
}
```
## 答案
```
java
Predicate
<
Float
>
checker
=
value
->
{
return
this
.
exp
(
value
)
<
1
;
}
```
## 选项
### lambda 形式
```
java
app
.
product
(
value
->
{
return
sigmod
(
value
);
});
```
### 对象方法
```
java
app
.
product
(
this
::
sigmod
)
```
### 类型方法
```
java
app
.
product
(
App:
:
sigmod
)
```
### Function 对象
```
java
Function
<
Float
,
Float
>
checker
=
value
->
{
if
(
this
.
exp
(
value
)
<
1
){
retrun
1
/
value
;
}
else
{
return
sigmod
(
value
);
}
}
```
\ No newline at end of file
data/3.Java高阶/2.Lambda表达式/lambda.json
0 → 100644
浏览文件 @
a1cac26d
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"lambda.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/3.Java高阶/2.Lambda表达式/lambda.md
0 → 100644
浏览文件 @
a1cac26d
# Lambda 表达式
下面这个 lambda 表达式,它的类型不可能是什么?
```
java
x
->
{
return
x
%
2
==
0
;
}
```
## 答案
```
java
Function
<
int
,
bool
>
```
## 选项
### 可以是 Function
```
java
Function
<
Integer
,
Boolean
>
```
### 可以是 Predicate
```
java
Predicate
<
Integer
>
```
### 可以是自定义的 SAM
```
java
public
interface
Parsec
{
Boolean
ask
(
Integer
value
);
}
```
### 可以是泛型的 SAM
```
java
public
interface
Parsec
<
T
,
R
>{
R
ask
(
T
value
);
}
```
data/3.Java高阶/
1.通过行为参数化传递代码/2.简写
/sam.json
→
data/3.Java高阶/
2.Lambda表达式
/sam.json
浏览文件 @
a1cac26d
文件已移动
data/3.Java高阶/
1.通过行为参数化传递代码/2.简写
/sam.md
→
data/3.Java高阶/
2.Lambda表达式
/sam.md
浏览文件 @
a1cac26d
文件已移动
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录