-
Notifications
You must be signed in to change notification settings - Fork 0
/
LearnGenerics.java
69 lines (52 loc) · 1.75 KB
/
LearnGenerics.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
public class LearnGenerics {
public static void main(String[] args) {
/*NumberKeyMap<Integer, String> numberKeyMap2 = new NumberKeyMap<Integer, String>(); */
NumberKeyMap<Number, Integer> numberKeyMap = new NumberKeyMap<>();
numberKeyMap.addPair(Integer.MAX_VALUE,1);
ArrayList<Number> arrayList = new ArrayList<>();
arrayList.add(Integer.MAX_VALUE);
System.out.println(numberKeyMap);
int max = printAndReturnValue(Integer.MAX_VALUE);
System.out.println(sumOfList(List.of(1, 2, 3, 4, 5)));
System.out.println(doubleTheValuesInList(new ArrayList<>(List.of(1, 2, 3))));
shout("Hello",1);
}
//Generic Function
static <X> X printAndReturnValue(X value) {
System.out.println(value);
return value;
}
//Upper bounded wlid card
static Double sumOfList(List<? extends Number> numberList) {
double sum = 0.0;
for (Number n : numberList) {
sum += n.doubleValue();
}
return sum;
}
//Lower bounded wild card
static List doubleTheValuesInList(List<? super Integer> list) {
for (int i = 0; i < list.size(); i++) {
list.set(i, (((Integer) list.get(i)) * 2));
}
return list;
}
static <T, V> void shout(T t, V v) {
System.out.println(t.toString() + v.toString());
}
}
class NumberKeyMap<T, V extends Number & Serializable> {
HashMap<T, V> hashMap = new HashMap<>();
public void addPair(T t, V v) {
hashMap.put(t, v);
}
@Override
public String toString() {
return hashMap.toString();
}
}