Skip to content

Commit ea770ea

Browse files
committed
feat: 添加 java-8 新特性代码(https://www.wdbyte.com/java-feature/)
1 parent b34b818 commit ea770ea

File tree

62 files changed

+2686
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+2686
-1
lines changed

core-java-modules/README.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,22 @@
1-
## core-java-performance
1+
## core-java-modules
22
当前模块包含 Java 核心代码
33

44
### 相关文章
5+
6+
- [Java 8 函数接口 UnaryOperator ](https://www.wdbyte.com/java8/java8-unaryoperaotr)
7+
- [Java 8 函数接口 BiPredicate ](https://www.wdbyte.com/java8/java8-bipredicate)
8+
- [Java 8 函数接口 BiFunction ](https://www.wdbyte.com/java8/java8-bifunction/)
9+
- [Java 8 函数接口 Supplier ](https://www.wdbyte.com/java8/java8-supplier/)
10+
- [Java 8 函数接口 Predicate ](https://www.wdbyte.com/java8/java8-predicate/)
11+
- [Java 8 函数接口 Function ](https://www.wdbyte.com/java8/java8-function/)
12+
- [Java 8 新特性 - forEach 遍历](https://www.wdbyte.com/java8/java8-foreach/)
13+
14+
- [Java 8 新特性 - LocalDate、LocalDateTime 时间处理介绍](https://www.wdbyte.com/2019/10/jdk/jdk8-time/)
15+
- [Java 8 新特性 - 使用 Optional优雅的处理空指针](https://www.wdbyte.com/2019/11/jdk/jdk8-optional/)
16+
- [Java 8 新特性 - Lambda 表达式、函数接口了解一下](https://www.wdbyte.com/2019/11/jdk/jdk8-lambda/)
17+
- [Java 8 新特性 - 超强的 Stream 流操作姿势还不学习一下](https://www.wdbyte.com/2019/11/jdk/jdk8-stream/)
18+
- [Java 7 新特性 - 和低效 IO 说再见,Files,Paths,Path 文件操作介绍](https://www.wdbyte.com/2020/09/jdk/jdk7-file-pahs/)
19+
- [Java 7 新特性 - 新特性 - 快来补一波 Java 7 语法特性](https://www.wdbyte.com/2020/01/jdk/jdk7-start/)
20+
521
- [Java 中的监控与管理原理概述](https://www.wdbyte.com/java/monitoring.html)
622
- [使用 JMX 监控和管理 Java 程序](https://www.wdbyte.com/java/jmx.html)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
## core-java-java
2+
当前模块包含 Java 8 新特性相关代码
3+
4+
### 相关文章
5+
- [Java 8 函数接口 UnaryOperator ](https://www.wdbyte.com/java8/java8-unaryoperaotr)
6+
- [Java 8 函数接口 BiPredicate ](https://www.wdbyte.com/java8/java8-bipredicate)
7+
- [Java 8 函数接口 BiFunction ](https://www.wdbyte.com/java8/java8-bifunction/)
8+
- [Java 8 函数接口 Supplier ](https://www.wdbyte.com/java8/java8-supplier/)
9+
- [Java 8 函数接口 Predicate ](https://www.wdbyte.com/java8/java8-predicate/)
10+
- [Java 8 函数接口 Function ](https://www.wdbyte.com/java8/java8-function/)
11+
- [Java 8 新特性 - forEach 遍历](https://www.wdbyte.com/java8/java8-foreach/)
12+
13+
- [Java 8 新特性 - LocalDate、LocalDateTime 时间处理介绍](https://www.wdbyte.com/2019/10/jdk/jdk8-time/)
14+
- [Java 8 新特性 - 使用 Optional优雅的处理空指针](https://www.wdbyte.com/2019/11/jdk/jdk8-optional/)
15+
- [Java 8 新特性 - Lambda 表达式、函数接口了解一下](https://www.wdbyte.com/2019/11/jdk/jdk8-lambda/)
16+
- [Java 8 新特性 - 超强的 Stream 流操作姿势还不学习一下](https://www.wdbyte.com/2019/11/jdk/jdk8-stream/)
17+
- [Java 7 新特性 - 和低效 IO 说再见,Files,Paths,Path 文件操作介绍](https://www.wdbyte.com/2020/09/jdk/jdk7-file-pahs/)
18+
- [Java 7 新特性 - 新特性 - 快来补一波 Java 7 语法特性](https://www.wdbyte.com/2020/01/jdk/jdk7-start/)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>core-java-modules</artifactId>
7+
<groupId>com.wdbyte.core-java-modules</groupId>
8+
<version>1.0.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
<artifactId>core-java-8</artifactId>
12+
<version>1.0.0-SNAPSHOT</version>
13+
<name>core-java-8</name>
14+
<packaging>jar</packaging>
15+
16+
<properties>
17+
<maven.compiler.source>1.8</maven.compiler.source>
18+
<maven.compiler.target>1.8</maven.compiler.target>
19+
</properties>
20+
21+
</project>
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.wdbyte;
2+
3+
import java.io.IOException;
4+
import java.nio.file.Files;
5+
import java.nio.file.Paths;
6+
import java.util.Base64;
7+
8+
/**
9+
* @author niulang
10+
* @date 2021/07/21
11+
*/
12+
public class Dog {
13+
14+
private String name;
15+
private Integer age;
16+
17+
public Dog() {
18+
}
19+
20+
public static void main(String[] args) throws IOException {
21+
byte[] bytes = Files.readAllBytes(
22+
Paths.get("/Users/darcy/git/java-core/java-8/target/classes/com/wdbyte/JEP371Test.class"));
23+
String toString = Base64.getEncoder().encodeToString(bytes);
24+
System.out.println(toString);
25+
}
26+
27+
public Dog(String name) {
28+
this.name = name;
29+
}
30+
31+
public Dog(String name, Integer age) {
32+
this.name = name;
33+
this.age = age;
34+
}
35+
36+
public String getName() {
37+
return name;
38+
}
39+
40+
public void setName(String name) {
41+
this.name = name;
42+
}
43+
44+
public Integer getAge() {
45+
return age;
46+
}
47+
48+
public void setAge(Integer age) {
49+
this.age = age;
50+
}
51+
52+
@Override
53+
public String toString() {
54+
return "Dog{" +
55+
", name='" + name + '\'' +
56+
", age=" + age +
57+
'}';
58+
}
59+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.wdbyte;
2+
3+
public class JEP371Test {
4+
public static String lookup() {return "www.wdbyte.com";}
5+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.wdbyte;
2+
3+
import java.util.function.BiFunction;
4+
5+
/**
6+
* @author niulang
7+
* @date 2021/07/26
8+
*/
9+
public class Java8BiFunction {
10+
11+
public static void main(String[] args) {
12+
// 两个字符串长度和
13+
BiFunction<String, String, Integer> lengthBiFun = (s1, s2) -> s1.length() + s2.length();
14+
Integer length = lengthBiFun.apply("java", "www.byte.com");
15+
System.out.println(length);
16+
17+
// x 的 y 次方
18+
BiFunction<Integer, Integer, Double> powBiFun = (i1, i2) -> Math.pow(i1, i2);
19+
Double pow = powBiFun.apply(2, 10);
20+
System.out.println(pow);
21+
}
22+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.wdbyte;
2+
3+
import java.util.function.BiFunction;
4+
import java.util.function.Function;
5+
6+
/**
7+
* @author niulang
8+
* @date 2021/07/26
9+
*/
10+
public class Java8BiFunctionAndThen {
11+
12+
public static void main(String[] args) {
13+
// 两个字符串长度和
14+
BiFunction<String, String, Integer> lengthBiFun = (s1, s2) -> s1.length() + s2.length();
15+
Function<Integer, String> function = s -> "长度和:" + s;
16+
17+
String result = lengthBiFun.andThen(function).apply("java", "www.byte.com");
18+
System.out.println(result);
19+
}
20+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.wdbyte;
2+
3+
import java.util.function.BiFunction;
4+
import java.util.function.Function;
5+
6+
/**
7+
* @author niulang
8+
* @date 2021/07/26
9+
*/
10+
public class Java8BiFunctionAndThen2 {
11+
12+
public static void main(String[] args) {
13+
String result = convert("java",
14+
"www.wdbyte.com",
15+
(a1, a2) -> a1.length() + a2.length(),
16+
r1 -> "长度和:" + r1);
17+
System.out.println(result);
18+
19+
String convert = convert(1, 2,
20+
(a1, a2) -> a1 + a2,
21+
r1 -> "和是:" + r1);
22+
System.out.println(convert);
23+
}
24+
25+
public static <T1, T2, R1, R2> R2 convert( T1 t1,
26+
T2 t2,
27+
BiFunction<T1, T2, R1> biFunction,
28+
Function<R1, R2> function) {
29+
return biFunction.andThen(function).apply(t1, t2);
30+
}
31+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package com.wdbyte;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
import java.util.function.BiFunction;
7+
8+
/**
9+
* @author niulang
10+
* @date 2021/07/26
11+
*/
12+
public class Java8BiFunctionFilter {
13+
14+
public static void main(String[] args) {
15+
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
16+
// 筛选 2 的倍数
17+
List<Integer> result1 = filter(list, 2, Java8BiFunctionFilter::divisible);
18+
System.out.println(result1);
19+
// 筛选 3 的倍数
20+
List<Integer> result2 = filter(list, 3, Java8BiFunctionFilter::divisible);
21+
System.out.println(result2);
22+
// 筛选 4 的倍数
23+
List<Integer> result3 = filter(list, 4, Java8BiFunctionFilter::divisible);
24+
System.out.println(result3);
25+
26+
// 筛选长度为 4 的字符串
27+
List<String> stringList = Arrays.asList("java", "node", "c++", "rust", "www.wdbyte.com");
28+
List<String> stringList1 = filter(stringList, 4, (s, n) -> s.length() == 4 ? true : null);
29+
System.out.println(stringList1);
30+
}
31+
32+
/**
33+
* n1 / n2 是否可以除尽
34+
*
35+
* @param n1
36+
* @param n2
37+
* @return
38+
*/
39+
private static Boolean divisible(Integer n1, Integer n2) {
40+
if (n1 % n2 == 0) {
41+
return true;
42+
}
43+
return null;
44+
}
45+
46+
/**
47+
* 过滤集合 List 中,符合 BiFunction<T, U, R> biFunction 的元素
48+
*
49+
* @param list
50+
* @param u
51+
* @param biFunction
52+
* @param <T>
53+
* @param <U>
54+
* @param <R>
55+
* @return
56+
*/
57+
private static <T, U, R> List<T> filter(List<T> list,
58+
U u,
59+
BiFunction<T, U, R> biFunction) {
60+
List<T> resultList = new ArrayList<>();
61+
for (T t : list) {
62+
if (biFunction.apply(t, u) != null) {
63+
resultList.add(t);
64+
}
65+
}
66+
return resultList;
67+
}
68+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.wdbyte;
2+
3+
import java.util.function.Consumer;
4+
5+
/**
6+
* @author niulang
7+
* @date 2021/07/20
8+
*/
9+
public class Java8Consumer {
10+
11+
public static void main(String[] args) {
12+
Consumer<String> lengthConsumer = s -> System.out.println(s.length());
13+
lengthConsumer.accept("www.wdbyte.com");
14+
15+
Consumer<String> printConsumer = System.out::println;
16+
printConsumer.accept("www.wdbyte.com");
17+
}
18+
}

0 commit comments

Comments
 (0)