Skip to content
This repository was archived by the owner on Feb 10, 2021. It is now read-only.

Commit c888311

Browse files
author
Taras
committed
- upgraded Java up to 10
- removed old examples like BehaviorParameterizationWithLambda.java - added new lambda, and optional examples like ComparatorExample.java - refactored Stream API tutorial
1 parent 4d6af1b commit c888311

35 files changed

+544
-630
lines changed
Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,62 @@
11
package com.bobocode.data;
22

33
import com.bobocode.model.Account;
4+
import com.bobocode.model.CreditAccount;
45
import io.codearte.jfairy.Fairy;
56
import io.codearte.jfairy.producer.person.Person;
67

7-
import java.math.BigDecimal;
88
import java.time.LocalDate;
99
import java.time.LocalDateTime;
1010
import java.util.List;
1111
import java.util.Random;
12-
import java.util.stream.IntStream;
1312

13+
import static java.math.BigDecimal.valueOf;
1414
import static java.util.stream.Collectors.toList;
1515
import static java.util.stream.IntStream.range;
1616

1717
public interface Accounts {
18-
static Account getAccount(){
19-
Fairy fairy = Fairy.create();
20-
Person person = fairy.person();
21-
Random random = new Random();
22-
23-
18+
static Account getAccount() {
2419
Account fakeAccount = new Account();
25-
fakeAccount.setFirstName(person.getFirstName());
26-
fakeAccount.setLastName(person.getLastName());
27-
fakeAccount.setEmail(person.getEmail());
28-
fakeAccount.setBirthday(LocalDate.of(
29-
person.getDateOfBirth().getYear(),
30-
person.getDateOfBirth().getMonthOfYear(),
31-
person.getDateOfBirth().getDayOfMonth()));
32-
fakeAccount.setBalance(BigDecimal.valueOf(random.nextInt(200_000)));
33-
fakeAccount.setCreationDate(LocalDateTime.now());
20+
initializeFakeFields(fakeAccount);
3421

3522
return fakeAccount;
3623
}
3724

38-
static List<Account> getAccountList(int size){
25+
static List<Account> getAccountList(int size) {
3926
return range(0, size)
4027
.mapToObj(i -> getAccount())
4128
.collect(toList());
4229
}
30+
31+
static CreditAccount getCreditAccount() {
32+
Random random = new Random();
33+
CreditAccount creditAccount = new CreditAccount();
34+
initializeFakeFields(creditAccount);
35+
creditAccount.setCreditBalance(valueOf(random.nextInt(100_000)));
36+
37+
return creditAccount;
38+
}
39+
40+
static List<CreditAccount> getCreditAccountsList(int size) {
41+
return range(0, size)
42+
.mapToObj(i -> getCreditAccount())
43+
.collect(toList());
44+
}
45+
46+
47+
private static void initializeFakeFields(Account account) {
48+
Fairy fairy = Fairy.create();
49+
Person person = fairy.person();
50+
Random random = new Random();
51+
52+
account.setFirstName(person.getFirstName());
53+
account.setLastName(person.getLastName());
54+
account.setEmail(person.getEmail());
55+
account.setBirthday(LocalDate.of(
56+
person.getDateOfBirth().getYear(),
57+
person.getDateOfBirth().getMonthOfYear(),
58+
person.getDateOfBirth().getDayOfMonth()));
59+
account.setBalance(valueOf(random.nextInt(200_000)));
60+
account.setCreationDate(LocalDateTime.now());
61+
}
4362
}

optional/src/main/java/com/bobocode/model/CreditAccount.java renamed to account-data/src/main/java/com/bobocode/model/CreditAccount.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import lombok.AccessLevel;
44
import lombok.AllArgsConstructor;
5+
import lombok.NoArgsConstructor;
56
import lombok.Setter;
67

78
import java.math.BigDecimal;
89
import java.util.Optional;
910

11+
@NoArgsConstructor
1012
@AllArgsConstructor(access = AccessLevel.PUBLIC)
1113
@Setter
1214
public class CreditAccount extends Account {

lambdas/src/main/java/com/bobocode/BehaviorParameterizationWithAnonymousClasses.java

Lines changed: 0 additions & 59 deletions
This file was deleted.

lambdas/src/main/java/com/bobocode/BehaviorParameterizationWithLambda.java

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.bobocode;
2+
3+
import com.bobocode.data.Accounts;
4+
import com.bobocode.model.Account;
5+
6+
import java.util.Comparator;
7+
import java.util.List;
8+
9+
import static java.util.Comparator.comparing;
10+
11+
public class ComparatorExample {
12+
13+
public static void main(String[] args) {
14+
List<Account> accounts = Accounts.getAccountList(10);
15+
sortUsingAnonymousClass(accounts);
16+
sortUsingLambda(accounts);
17+
sortUsingMethodReference(accounts);
18+
}
19+
20+
private static void sortUsingAnonymousClass(List<Account> accounts) {
21+
accounts.sort(new Comparator<Account>() {
22+
@Override
23+
public int compare(Account o1, Account o2) {
24+
return o1.getFirstName().compareTo(o2.getFirstName());
25+
}
26+
});
27+
}
28+
29+
private static void sortUsingLambda(List<Account> accounts) {
30+
accounts.sort((a1, a2) -> a1.getFirstName().compareTo(a2.getFirstName()));
31+
}
32+
33+
private static void sortUsingMethodReference(List<Account> accounts) {
34+
accounts.sort(comparing(Account::getFirstName));
35+
}
36+
}

lambdas/src/main/java/com/bobocode/HardcodedBehavior.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

lambdas/src/main/java/com/bobocode/MethodReference.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
import java.util.List;
77
import java.util.function.Consumer;
8-
import java.util.function.Function;
9-
import java.util.function.Supplier;
108

119
/**
1210
* Method reference is a shorthand for lambda expression that could be use in some cases for better readability.
@@ -15,19 +13,19 @@ public class MethodReference {
1513
public static void main(String[] args) {
1614
List<Account> accounts = Accounts.getAccountList(10);
1715

18-
printAccountsWithLambda(accounts);
19-
printAccountsWithMethodReference(accounts);
16+
printAccountsUsingLambda(accounts);
17+
printAccountsUsingMethodReference(accounts);
2018
}
2119

22-
private static void printAccountsWithLambda(List<Account> accounts) {
23-
consumeAccounts(accounts, a -> System.out.println(a));
20+
private static void printAccountsUsingLambda(List<Account> accounts) {
21+
processAccounts(accounts, a -> System.out.println(a));
2422
}
2523

26-
private static void printAccountsWithMethodReference(List<Account> accounts) {
27-
consumeAccounts(accounts, System.out::println); //todo: think what if you want to print only emails
24+
private static void printAccountsUsingMethodReference(List<Account> accounts) {
25+
processAccounts(accounts, System.out::println);
2826
}
2927

30-
private static void consumeAccounts(List<Account> accounts, Consumer<Account> consumer) {
28+
private static void processAccounts(List<Account> accounts, Consumer<Account> consumer) {
3129
for (Account account : accounts){
3230
consumer.accept(account);
3331
}

lambdas/src/main/java/com/bobocode/PredefinedInterface.java

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.bobocode;
2+
3+
public class RunnableExample {
4+
public static void main(String[] args) {
5+
sayHelloFromNewThread();
6+
sayHelloFromNewThreadUsingLambda();
7+
}
8+
9+
10+
private static void sayHelloFromNewThread() {
11+
Runnable runnable = new Runnable() {
12+
@Override
13+
public void run() {
14+
System.out.println("Hello from new Thread!");
15+
}
16+
};
17+
Thread t = new Thread(runnable);
18+
t.start();
19+
}
20+
21+
private static void sayHelloFromNewThreadUsingLambda() {
22+
Runnable runnable = () -> System.out.println("Hello Lambda!");
23+
Thread t = new Thread(runnable);
24+
t.start();
25+
}
26+
}

lambdas/src/main/java/com/bobocode/functions/Condition.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)