Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
*.iml
.idea/
out/
38 changes: 38 additions & 0 deletions src/Generics/GenericExercise1.java
Original file line number Diff line number Diff line change
@@ -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 <T> void printArr(T[] arr) {
for (T a: arr) {
System.out.print(a + " ");
}
System.out.println();
}
}

class Changer {
static <T> void change(T[] arr) {
T temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
}
42 changes: 42 additions & 0 deletions src/Generics/GenericExercise2.java
Original file line number Diff line number Diff line change
@@ -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<Integer> arrayList;

arrayList = toArrayList(arr);
printArrayList(arrayList);
System.out.println();

// Test String array
System.out.println("------ Test String array ------");
String[] strArr = { "Hello", "world", "!!!"};
ArrayList<String> stringArrayList;

stringArrayList = toArrayList(strArr);
printArrayList(stringArrayList);
}

static <T> ArrayList<T> toArrayList(T[] arr) {
ArrayList<T> arrayList = new ArrayList<>();

for (T e: arr) {
arrayList.add(e);
}

return arrayList;
}

static <T> void printArrayList(ArrayList<T> arrayList) {
for(T e: arrayList) {
System.out.print(e + " ");
}

System.out.println();
}
}
95 changes: 95 additions & 0 deletions src/Generics/GenericExercise3.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
package Generics;

import java.util.ArrayList;

public class GenericExercise3 {
public static void main(String[] args) {
Box<Orange> b1, b3;
Box<Apple> 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<Orange>()
.compareTo(new Box<Apple>()));
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 <T extends Fruit> {

ArrayList<T> 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<T> box) {
while (fruits.size() > 0) {
box.addFruit(fruits.remove(0));
}
}
}