1 import java.util.ArrayList;
2 import java.util.List;
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 @author <aconover@towson.edu>
18 @param <T>
19
20 class Node<T extends Comparable<? super T>> implements Comparable<Node<T>> {
21
22
23 private T data;
24
25
26 public Node(T data) {
27 this.data = data;
28 }
29
30
31 public T getData() {
32 return data;
33 }
34
35
36 @Override
37 public int compareTo(Node<T> other) {
38
39 return (this.data.compareTo(other.data));
40 }
41
42
43 @Override
44 public String toString() {
45 String str = String.format("%s (%s)", data.toString(), super.toString());
46 return str;
47 }
48 }
49
50
51
52
53
54
55
56
57 @author <aconover@towson.edu>
58
59 public class ComparabilityExample {
60
61 public static void main(String[] args) {
62
63 Node<String> s1 = new Node<String>("Apple");
64 Node<String> s2 = new Node<String>("Zucchini");
65 Node<Integer> i1 = new Node<Integer>(3);
66 Node<Integer> i2 = new Node<Integer>(7);
67
68
69 Node<String> largeString = getLargestNode(s1, s2);
70 System.out.println("Largest String is: " + largeString);
71
72
73 Node<Integer> largeInt = getLargestNode(i1, i2);
74 System.out.println("Largest Integer is: " + largeInt);
75
76
77
78
79
80
81 List<Node<String>> list = new ArrayList<Node<String>>(2);
82 list.add(s1);
83 list.add(s2);
84 list.add(new Node<String>("zebra"));
85
86 System.out.println("Largest List member is: " + getLargestNode(list));
87 }
88
89
90
91 static <T extends Comparable<? super T>> Node<T> getLargestNode(Node<T> node1, Node<T> node2) {
92 if (node1.compareTo(node2) >= 0) {
93 return node1;
94 } else {
95 return node2;
96 }
97 }
98
99
100 static <T extends Comparable<? super T>> Node<T> getLargestNode(List<Node<T>> nodeList) {
101 Node<T> largest = nodeList.get(0);
102
103
104 for (Node<T> node : nodeList) {
105 if (node.compareTo(largest) > 0) {
106 largest = node;
107 }
108 }
109
110 return largest;
111 }
112 }
113