Skip to content

Commit 7b0a2e5

Browse files
committed
🍱 update default method video url
1 parent 820707e commit 7b0a2e5

File tree

7 files changed

+104
-4
lines changed

7 files changed

+104
-4
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ java 8 改变了我们思考和编码的方式,在这里你可以学习到 Jav
2525
|第 3 课 | [理解 lambda](https://github.com/biezhi/learn-java8/blob/master/java8-lambda/README.md) | [哔哩哔哩](https://www.bilibili.com/video/av19287893/index_3.html#page=3) ¦ [Youtube](https://youtu.be/VkdMeFEGDH8) | [lambda1](https://github.com/biezhi/learn-java8/tree/master/java8-lambda/src/main/java/io/github/biezhi/java8/lambda/lesson1) |
2626
|第 4 课 | [初尝 lambda](https://github.com/biezhi/learn-java8/blob/master/java8-lambda/README.md) | [哔哩哔哩](https://www.bilibili.com/video/av19287893/index_4.html#page=4) ¦ [Youtube](https://youtu.be/X7Zv5vygjTc) | [lambda2](https://github.com/biezhi/learn-java8/tree/master/java8-lambda/src/main/java/io/github/biezhi/java8/lambda/lesson2) |
2727
|第 5 课 | [lambda 进阶](https://github.com/biezhi/learn-java8/blob/master/java8-lambda/README.md) | [哔哩哔哩](https://www.bilibili.com/video/av19287893/index_5.html#page=5) ¦ [Youtube](https://youtu.be/3G83it4IASc) | [lambda3](https://github.com/biezhi/learn-java8/tree/master/java8-lambda/src/main/java/io/github/biezhi/java8/lambda/lesson3) |
28-
|第 6 课 | 默认方法的妙用 | 哔哩哔哩 ¦ Youtube | |
28+
|第 6 课 | 默认方法的妙用 | [哔哩哔哩](https://www.bilibili.com/video/av19287893/index_6.html#page=6) ¦ [Youtube](https://youtu.be/sAuEnkWezDM) | [lambda3](https://github.com/biezhi/learn-java8/tree/master/java8-default-methods/src/main/java/io/github/biezhi/java8/defaultmethods) |
2929
|第 7 课 | 干掉空指针之 Optional | 哔哩哔哩 ¦ Youtube | |
3030
|第 8 课 | 理解 Stream | 哔哩哔哩 ¦ Youtube | |
3131
|第 9 课 | Stream API(上)| 哔哩哔哩 ¦ Youtube | |

java8-default-methods/src/main/java/io/github/biezhi/java8/defaultmethods/Calculator.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,11 @@ public interface Calculator {
1616

1717
int divide(int number, int divisor);
1818

19+
default int mod(int first, int second){
20+
return first % second;
21+
}
22+
23+
static Calculator getInstance(){
24+
return new BasicCalculator();
25+
}
1926
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.github.biezhi.java8.defaultmethods;
2+
3+
/**
4+
* @author biezhi
5+
* @date 2018/2/11
6+
*/
7+
public class CalculatorFactoy {
8+
9+
public static Calculator getInstance(){
10+
return new BasicCalculator();
11+
}
12+
13+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.github.biezhi.java8.defaultmethods;
2+
3+
import java.util.Iterator;
4+
import java.util.function.Predicate;
5+
6+
/**
7+
* @author biezhi
8+
* @date 2018/2/11
9+
*/
10+
public interface Collection<T> extends java.util.Collection {
11+
12+
default boolean removeIf2(Predicate<T> predicate){
13+
boolean isRemoved = false;
14+
Iterator<T> iterator = iterator();
15+
while(iterator.hasNext()){
16+
if(predicate.test(iterator.next())){
17+
iterator.remove();
18+
isRemoved = true;
19+
}
20+
}
21+
return isRemoved;
22+
}
23+
24+
}

java8-default-methods/src/main/java/io/github/biezhi/java8/defaultmethods/UseCalc.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ public static void main(String[] args) {
1212
int sum = calculator.add(1, 2);
1313
System.out.println(sum);
1414

15-
BasicCalculator cal = new BasicCalculator();
15+
Calculator cal = Calculator.getInstance();
1616
int difference = cal.subtract(3, 2);
1717
System.out.println(difference);
18+
19+
System.out.println(cal.mod(3, 2));
1820
}
1921
}

java8-optional/src/main/java/io/github/biezhi/java8/optional/OptionalDemo.java

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.biezhi.java8.optional;
22

33
import java.util.Optional;
4+
import java.util.Properties;
45

56
/**
67
* @author biezhi
@@ -36,12 +37,64 @@ public void map() {
3637
public void flatMap() {
3738
User user = new User();
3839
Optional<User> userOptional = Optional.of(user);
39-
// userOptional.map(User::getOptAddress).map(Address::getStreet);
40-
userOptional.flatMap(User::getOptAddress).map(Address::getStreet);
40+
// userOptional.map(user -> user.getOptAddress())
41+
Optional<String> stringOptional = userOptional.flatMap(User::getOptAddress).map(Address::getStreet);
42+
4143
}
4244

4345
/**
4446
* 4. 默认行为及解引用 Optional 对象
4547
*/
48+
public void defaultValue() {
49+
Optional<Address> addressOptional = Optional.ofNullable(null);
50+
String street = addressOptional.map(Address::getStreet).orElse("北京二环");
51+
System.out.println(street);
52+
}
53+
54+
public static void main(String[] args) {
55+
User user = new User();
56+
user.setUsername("biezhi");
57+
user.setPassword("123456");
58+
user.setOptAddress(Optional.of(new Address("达尔文路", "88号")));
59+
user.setAge(30);
60+
61+
// Address address1 = null;
62+
// try {
63+
// address1 = user.getOptAddress().filter(address -> address.getDoor().contains("878"))
64+
// .orElseThrow(new Supplier<Throwable>() {
65+
// @Override
66+
// public Throwable get() {
67+
// return new Exception("挂了");
68+
// }
69+
// });
70+
// } catch (Throwable throwable) {
71+
// throwable.printStackTrace();
72+
// }
73+
// System.out.println(address1);
74+
75+
System.out.println(getStreet(Optional.of(user), 50));
76+
}
77+
78+
public static String getStreet(Optional<User> user, int minAge) {
79+
return user.filter(u -> u.getAge() >= minAge)
80+
.flatMap(User::getOptAddress)
81+
.map(Address::getStreet)
82+
.orElse("没有");
83+
}
84+
85+
public static Optional<Integer> parseInt(String value) {
86+
try {
87+
return Optional.ofNullable(Integer.parseInt(value));
88+
} catch (Exception e) {
89+
return Optional.empty();
90+
}
91+
}
92+
93+
public int readPoint(Properties props, String name) {
94+
return Optional.ofNullable(props.getProperty(name))
95+
.flatMap(OptionalDemo::parseInt)
96+
.filter(i -> i > 0)
97+
.orElse(0);
98+
}
4699

47100
}

java8-optional/src/main/java/io/github/biezhi/java8/optional/User.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class User {
1515

1616
private String username;
1717
private String password;
18+
private Integer age;
1819
private Address address;
1920

2021
private Optional<Address> optAddress;

0 commit comments

Comments
 (0)