From 79b8fce31aa4411e3acf8e0f12f1d689966b661b Mon Sep 17 00:00:00 2001 From: Sleeper32 Date: Wed, 6 Nov 2019 20:30:01 +1000 Subject: [PATCH 1/3] solved Exercise 1 --- .gitignore | 1 + src/Generics/GenericExercise1.java | 38 ++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/Generics/GenericExercise1.java diff --git a/.gitignore b/.gitignore index 0cc2124..45f65a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.iml .idea/ +out/ \ No newline at end of file diff --git a/src/Generics/GenericExercise1.java b/src/Generics/GenericExercise1.java new file mode 100644 index 0000000..fe03972 --- /dev/null +++ b/src/Generics/GenericExercise1.java @@ -0,0 +1,38 @@ +package Generics; + +public class GenericExercise1 { + public static void main(String[] args) { + // Change elements in Integer array + Integer[] arr = new Integer[]{ 1, 2 }; + + System.out.println("------ Test Integer array ------"); + printArr(arr); + Changer.change(arr); + printArr(arr); + System.out.println(); + + // Change elements in String array + String[] arr2 = new String[]{ "Hello", "world" }; + + System.out.println("------ Test String array ------`"); + printArr(arr2); + Changer.change(arr2); + printArr(arr2); + + } + + public static void printArr(T[] arr) { + for (T a: arr) { + System.out.print(a + " "); + } + System.out.println(); + } +} + +class Changer { + static void change(T[] arr) { + T temp = arr[0]; + arr[0] = arr[1]; + arr[1] = temp; + } +} From fdcf20c3cb94ba2d7847cc7232dcc49850400e3e Mon Sep 17 00:00:00 2001 From: Sleeper32 Date: Wed, 6 Nov 2019 21:03:13 +1000 Subject: [PATCH 2/3] solved exercise 2 --- src/Generics/GenericExercise2.java | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/Generics/GenericExercise2.java diff --git a/src/Generics/GenericExercise2.java b/src/Generics/GenericExercise2.java new file mode 100644 index 0000000..76ce4bc --- /dev/null +++ b/src/Generics/GenericExercise2.java @@ -0,0 +1,42 @@ +package Generics; + +import java.util.ArrayList; + +public class GenericExercise2 { + public static void main(String[] args) { + // Test Integer array + System.out.println("------ Test Integer array ------"); + Integer[] arr = { 1, 2, 3, 4 }; + ArrayList arrayList; + + arrayList = toArrayList(arr); + printArrayList(arrayList); + System.out.println(); + + // Test String array + System.out.println("------ Test String array ------"); + String[] strArr = { "Hello", "world", "!!!"}; + ArrayList stringArrayList; + + stringArrayList = toArrayList(strArr); + printArrayList(stringArrayList); + } + + static ArrayList toArrayList(T[] arr) { + ArrayList arrayList = new ArrayList<>(); + + for (T e: arr) { + arrayList.add(e); + } + + return arrayList; + } + + static void printArrayList(ArrayList arrayList) { + for(T e: arrayList) { + System.out.print(e + " "); + } + + System.out.println(); + } +} From 48e5b13c835288751f7aa9340b63d00fc2abccd6 Mon Sep 17 00:00:00 2001 From: Sleeper32 Date: Wed, 6 Nov 2019 23:21:53 +1000 Subject: [PATCH 3/3] fix solution 3 --- src/Generics/GenericExercise3.java | 95 ++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 src/Generics/GenericExercise3.java diff --git a/src/Generics/GenericExercise3.java b/src/Generics/GenericExercise3.java new file mode 100644 index 0000000..b302ebe --- /dev/null +++ b/src/Generics/GenericExercise3.java @@ -0,0 +1,95 @@ +package Generics; + +import java.util.ArrayList; + +public class GenericExercise3 { + public static void main(String[] args) { + Box b1, b3; + Box b2; + + b1 = new Box<>(); + b2 = new Box<>(); + b3 = new Box<>(); + for (int i = 0; i < 10; i++) { + b1.addFruit(new Orange()); + } + for (int i = 0; i < 10; i++) { + b2.addFruit(new Apple()); + } + for (int i = 0; i < 10; i++) { + b3.addFruit(new Orange()); + } + + System.out.println("box1: weight: " + b1.getWeight()); + System.out.println("box2: weight: " + b2.getWeight()); + System.out.println("box3: weight: " + b3.getWeight()); + System.out.println(); + + // Compare test + System.out.println("------ Compare test ------"); + System.out.println("b1 == b2: " + b1.compareTo(b2)); + System.out.println("empty(Orange) == empty(Apple): " + new Box() + .compareTo(new Box())); + System.out.println("b1 == b3: " + b1.compareTo(b3)); + System.out.println(); + + // Drop test + System.out.println("------ Drop test ------"); + b1.dropFruits(b3); + System.out.println("b3: weight: " + b3.getWeight()); + System.out.println("b1: weight: " + b1.getWeight()); + } +} + +abstract class Fruit { + abstract public float getWeight(); +} + +class Apple extends Fruit { + + @Override + public float getWeight() { + return 1.0f; + } +} + +class Orange extends Fruit { + + @Override + public float getWeight() { + return 1.5f; + } +} + +class Box { + + ArrayList fruits; + + public Box() { + fruits = new ArrayList<>(); + } + + public void addFruit(T fruit) { + fruits.add(fruit); + } + + public float getWeight() { + float weight = 0.0f; + + if (fruits.size() > 0) { + weight = fruits.size() * fruits.get(0).getWeight(); + } + + return weight; + } + + public boolean compareTo(Box box) { + return (getWeight() == box.getWeight()); + } + + public void dropFruits(Box box) { + while (fruits.size() > 0) { + box.addFruit(fruits.remove(0)); + } + } +}