diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/1.\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226/config.json" "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/1.\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226/config.json" deleted file mode 100644 index 54a593347dc7be24c6ca397ab80dfcedbc7a2217..0000000000000000000000000000000000000000 --- "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/1.\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226/config.json" +++ /dev/null @@ -1,7 +0,0 @@ -{ - "node_id": "java-3a05a505cd514579a52321f0c945d577", - "keywords": [], - "children": [], - "export": [], - "title": "行为参数化" -} \ No newline at end of file diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/2.\347\256\200\345\206\231/config.json" "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/2.\347\256\200\345\206\231/config.json" deleted file mode 100644 index cdb7ce21ec4797a13442554f02c93dd8c0dab202..0000000000000000000000000000000000000000 --- "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/2.\347\256\200\345\206\231/config.json" +++ /dev/null @@ -1,7 +0,0 @@ -{ - "node_id": "java-b121d453fc544e188b9ad50476c22f59", - "keywords": [], - "children": [ - ], - "export": ["sam.json"] -} \ No newline at end of file diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/3.\351\253\230\345\272\217\345\207\275\346\225\260/config.json" "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/3.\351\253\230\345\272\217\345\207\275\346\225\260/config.json" deleted file mode 100644 index 6a310a83a92f15f937f8e74cc81e969c9b7ea658..0000000000000000000000000000000000000000 --- "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/3.\351\253\230\345\272\217\345\207\275\346\225\260/config.json" +++ /dev/null @@ -1,8 +0,0 @@ -{ - "node_id": "java-db33d9c7f2004cdbbc058254fe536ace", - "keywords": [], - "children": [ - ], - "export": ["double.json"], - "title": "真实的例子" -} \ No newline at end of file diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/3.\351\253\230\345\272\217\345\207\275\346\225\260/double.md" "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/3.\351\253\230\345\272\217\345\207\275\346\225\260/double.md" deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/config.json" "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/config.json" index 7d6032c5eb5f628ad642926bbcbe243354d1fbd1..86915706ddfe76768f5946b37b84508406161773 100644 --- "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/config.json" +++ "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/config.json" @@ -2,6 +2,9 @@ "node_id": "java-fb711fb0dfbb40db974476ea2d9faf9d", "keywords": [], "children": [], - "export": [], + "export": [ + "map.json", + "sum.json" + ], "title": "通过行为参数化传递代码" } \ No newline at end of file diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/filter.json" "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/filter.json" new file mode 100644 index 0000000000000000000000000000000000000000..abbfb75e9d5eb011d2bbdd5b7e85b3256d785834 --- /dev/null +++ "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/filter.json" @@ -0,0 +1,6 @@ +{ + "type": "code_options", + "author": "刘鑫", + "source": "double.md", + "notebook_enable": false +} \ No newline at end of file diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/filter.md" "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/filter.md" new file mode 100644 index 0000000000000000000000000000000000000000..c63dc4350bd9b39bd37f04c7665107975282a02d --- /dev/null +++ "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/filter.md" @@ -0,0 +1,55 @@ +# 过滤 + +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 diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/3.\351\253\230\345\272\217\345\207\275\346\225\260/double.json" "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/map.json" similarity index 100% rename from "data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/3.\351\253\230\345\272\217\345\207\275\346\225\260/double.json" rename to "data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/map.json" diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/map.md" "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/map.md" new file mode 100644 index 0000000000000000000000000000000000000000..901a8f01dc238a0cfbb1a78dd5f8f2544534bc1c --- /dev/null +++ "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/map.md" @@ -0,0 +1,49 @@ +# 翻倍操作 + +下面哪个选项可以从 `Stream stream` 构造一个新的 List 对象,使其包含stream中每个元素翻倍后的结果: + +## template + +```java +import java.util.stream.Stream; +import java.util.stream.IntStream; + +public class App{ + public void main(String[] args){ + Stream stream = IntStream.range(0, 100).boxed(); + $code + for(var item : result){ + System.out.println(item); + } + } +} +``` + +## 答案 + +```java +List result = stream.map(x->x*2).collect(Collectors.toList()); +``` + +## 选项 + +### 没有变换为 List + +```java +List result = stream.map(x->x*2); +``` + +### lambda 格式错误 + +```java +List result = stream.map(* 2).collect(Collectors.toList()); +``` + +### 错误的使用了 foreach + +```java +List result = stream.foreach(item -> { + return item * 2 +}); +``` + diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/sum.json" "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/sum.json" new file mode 100644 index 0000000000000000000000000000000000000000..df827eddab087d086682c9dbedf38a23dc48b004 --- /dev/null +++ "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/sum.json" @@ -0,0 +1,6 @@ +{ + "type": "code_options", + "author": "刘鑫", + "source": "sum.md", + "notebook_enable": false +} \ No newline at end of file diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/sum.md" "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/sum.md" new file mode 100644 index 0000000000000000000000000000000000000000..b5f98667ffdcd6f4c3346437f9b1addc01305aae --- /dev/null +++ "b/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/sum.md" @@ -0,0 +1,40 @@ +# 求和 + +下面代码对整数流求和,其中有错的是 + +## 答案 + +```java +Stream stream = IntStream.range(0,100).boxed(); +return stream.mapToInt(x -> x); +``` + +## 选项 + +### 标准库方法 + +```java +Stream stream = IntStream.range(0,100).boxed(); +return stream.sum(); +``` + +### 显式调用 simmingInt 方法,可以定义一些复杂的处理逻辑 + +```java +var collector = Collectors.summingInt(x->x); +return stream.collect(collector); +``` + +### 也可以封装到一个朴素的方法中,作为隐式简写 + +```java +var collector = Collectors.summingInt(this::identity); +return stream.collect(collector); +``` + +### 也可以封装到一个朴素的方法中,作为隐式简写 + +```java +var collector = Collectors.summingInt(App::identity); +return stream.collect(collector); +``` \ No newline at end of file diff --git "a/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/config.json" "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/config.json" index 550e9adf6c074b88eea9efad71579fa06fe7b389..82395c30e11781703f35b452240f3c0a96f2cedb 100644 --- "a/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/config.json" +++ "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/config.json" @@ -2,6 +2,9 @@ "node_id": "java-a3b60740abe74bb8a6c16dec381d31c4", "keywords": [], "children": [], - "export": [], + "export": [ + "lambda.json", + "sam.json" + ], "title": "Lambda表达式" } \ No newline at end of file diff --git "a/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/handler.json" "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/handler.json" new file mode 100644 index 0000000000000000000000000000000000000000..e96f723c646e26c454f3d7f14197a2d8a727ba58 --- /dev/null +++ "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/handler.json" @@ -0,0 +1,6 @@ +{ + "type": "code_options", + "author": "刘鑫", + "source": "handler.md", + "notebook_enable": false +} \ No newline at end of file diff --git "a/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/handler.md" "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/handler.md" new file mode 100644 index 0000000000000000000000000000000000000000..dc93126a0841f0a3aa23cfb48f7eb7c7555f72ca --- /dev/null +++ "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/handler.md" @@ -0,0 +1,57 @@ +# 函数式的参数 + +下面这个代码所定义的函数,用哪一种代码调用会出错? + +```java +import java.util.function.Function; + +public class App { + public product(Function consumer) { + // 这里有一段代码生成了 T value 变量 + return consumer(value); + } + // 省略其它代码 +} +``` + +## 答案 + +```java +Predicate 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 checker = value -> { + if(this.exp(value) < 1){ + retrun 1/value; + } else { + return sigmod(value); + } +} +``` \ No newline at end of file diff --git "a/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/lambda.json" "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/lambda.json" new file mode 100644 index 0000000000000000000000000000000000000000..3773b69816a883286c198a7fa3d28ca681337f2a --- /dev/null +++ "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/lambda.json" @@ -0,0 +1,6 @@ +{ + "type": "code_options", + "author": "刘鑫", + "source": "lambda.md", + "notebook_enable": false +} \ No newline at end of file diff --git "a/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/lambda.md" "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/lambda.md" new file mode 100644 index 0000000000000000000000000000000000000000..14c50d3f40ecbec6b8f4ebe22e5b71e73cd15032 --- /dev/null +++ "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/lambda.md" @@ -0,0 +1,45 @@ +# Lambda 表达式 + +下面这个 lambda 表达式,它的类型不可能是什么? + +```java +x -> { + return x %2 == 0; +} +``` + +## 答案 + +```java +Function +``` + +## 选项 + +### 可以是 Function + +```java +Function +``` + +### 可以是 Predicate + +```java +Predicate +``` + +### 可以是自定义的 SAM + +```java +public interface Parsec{ + Boolean ask(Integer value); +} +``` + +### 可以是泛型的 SAM + +```java +public interface Parsec{ + R ask(T value); +} +``` diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/2.\347\256\200\345\206\231/sam.json" "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/sam.json" similarity index 100% rename from "data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/2.\347\256\200\345\206\231/sam.json" rename to "data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/sam.json" diff --git "a/data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/2.\347\256\200\345\206\231/sam.md" "b/data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/sam.md" similarity index 100% rename from "data/3.Java\351\253\230\351\230\266/1.\351\200\232\350\277\207\350\241\214\344\270\272\345\217\202\346\225\260\345\214\226\344\274\240\351\200\222\344\273\243\347\240\201/2.\347\256\200\345\206\231/sam.md" rename to "data/3.Java\351\253\230\351\230\266/2.Lambda\350\241\250\350\276\276\345\274\217/sam.md"