-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExample122.java
More file actions
50 lines (41 loc) · 1.46 KB
/
Example122.java
File metadata and controls
50 lines (41 loc) · 1.46 KB
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
// Example 122 from page 93
//
import java.util.*;
// A constraint may involve type parameters
// A type may have multiple constraints
class ComparablePair<T extends Comparable<T>, U extends Comparable<U>>
implements Comparable<ComparablePair<T,U>>
{
public final T fst;
public final U snd;
public ComparablePair(T fst, U snd) {
this.fst = fst; this.snd = snd;
}
// Lexicographic ordering
@Override
public int compareTo(ComparablePair<T,U> that) {
int firstCmp = this.fst.compareTo(that.fst);
return firstCmp != 0 ? firstCmp : this.snd.compareTo(that.snd);
}
@Override
public String toString() {
return "(" + fst + ", " + snd + ")";
}
}
// Sorting soccer world champions by country and year
class Example122 {
public static void main(String[] args) {
ArrayList<ComparablePair<String,Integer>> lst
= new ArrayList<ComparablePair<String,Integer>>();
lst.add(new ComparablePair<String,Integer>("Brazil", 2002));
lst.add(new ComparablePair<String,Integer>("Italy", 1982));
lst.add(new ComparablePair<String,Integer>("Argentina", 1978 ));
lst.add(new ComparablePair<String,Integer>("Argentina", 1986 ));
lst.add(new ComparablePair<String,Integer>("Germany", 1990));
lst.add(new ComparablePair<String,Integer>("Brazil", 1994));
lst.add(new ComparablePair<String,Integer>("France", 1998));
Collections.sort(lst);
for (ComparablePair<String,Integer> pair : lst)
System.out.println(pair);
}
}