From a5a81938dd2b8b57d3fe32ab8509c03a18024e6a Mon Sep 17 00:00:00 2001 From: deepcloudlabs Date: Tue, 19 Jul 2022 16:35:38 +0300 Subject: [PATCH] initial commit --- .../application/StudyPolymorphism.java | 1 + .../src/com/example/StudyWrapperClasses.java | 1 + .../com/example/zoo/application/ZooApp.java | 64 +++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 zoo/src/com/example/zoo/application/ZooApp.java diff --git a/core-banking/src/com/example/banking/application/StudyPolymorphism.java b/core-banking/src/com/example/banking/application/StudyPolymorphism.java index 644e294..763fa78 100644 --- a/core-banking/src/com/example/banking/application/StudyPolymorphism.java +++ b/core-banking/src/com/example/banking/application/StudyPolymorphism.java @@ -6,6 +6,7 @@ import com.example.banking.domain.Account; import com.example.banking.domain.CheckingAccount; +@SuppressWarnings("unused") public class StudyPolymorphism { public static void main(String[] args) { diff --git a/study-primitive-types/src/com/example/StudyWrapperClasses.java b/study-primitive-types/src/com/example/StudyWrapperClasses.java index 40acae3..ec31fb7 100644 --- a/study-primitive-types/src/com/example/StudyWrapperClasses.java +++ b/study-primitive-types/src/com/example/StudyWrapperClasses.java @@ -2,6 +2,7 @@ import java.util.List; +@SuppressWarnings("unused") public class StudyWrapperClasses { public static void main(String[] args) { diff --git a/zoo/src/com/example/zoo/application/ZooApp.java b/zoo/src/com/example/zoo/application/ZooApp.java new file mode 100644 index 0000000..93f40b6 --- /dev/null +++ b/zoo/src/com/example/zoo/application/ZooApp.java @@ -0,0 +1,64 @@ +package com.example.zoo.application; + +import static java.util.stream.Collectors.counting; +import static java.util.stream.Collectors.groupingBy; + +import java.util.List; + +import com.example.zoo.domain.Animal; +import com.example.zoo.domain.Cat; +import com.example.zoo.domain.Fish; +import com.example.zoo.domain.Pet; +import com.example.zoo.domain.Spider; + +public class ZooApp { + + public static void main(String[] args) { + var zoo = List.of( + new Spider(), + new Cat(), + new Fish("Free Willy"), + new Spider(), + new Cat("Garfield"), + new Fish("Nemo"), + new Spider(), + new Cat() + ); + + for (var animal : zoo) { + animal.walk(); + animal.eat(); + if (animal instanceof Pet pet) { + // var pet = (Pet) animal; + pet.play(); + } + } + // outer loop + var totalLegs = 0; + for (var animal : zoo) { + if (animal instanceof Pet) { + totalLegs += animal.getLegs(); + } + } + System.out.println("Total number of legs: %d".formatted(totalLegs)); + + // Since Java SE 8: Functional Programming + totalLegs = + zoo.stream() // inner loop + //.filter( animal -> animal instanceof Pet) + //.filter( animal -> Pet.class.isInstance(animal) ) + .filter( Pet.class::isInstance ) + //.mapToInt( animal -> animal.getLegs()) + .mapToInt(Animal::getLegs) + .sum(); + // one-liner + totalLegs = zoo.stream().parallel().filter(Pet.class::isInstance).mapToInt(Animal::getLegs).sum(); + System.out.println("Total number of legs: %d".formatted(totalLegs)); + + // Stream API + Functional Programming + Filter/Map/Reduce + zoo.stream() + .collect(groupingBy(Animal::getClass,counting())) + .forEach((clazz,count) -> System.out.println("%s: %d".formatted(clazz.getSimpleName(),count))) ; + } + +}