public class UniquePair> // class with 2 instance data of type T, T must implement { // Comparable so we can compare them, a UniquePair will have private T item1, item2; // two different instance data, they cannot be equal public UniquePair() // no arg constructor, both items can be null in this cas { item1=null; item2=null; } public UniquePair(T i1, T i2) // two arg constructor, ensure items are unique or set second item to null { item1=i1; item2=i2; if(item1.compareTo(item2)==0) item2=null; } public T get1() // accessors for the two instance data { return item1; } public T get2() { return item2; } public void set1(T i1) // mutators for the two instance data, ensure the two items are unique or { // set second item to null item1=i1; if(item1.compareTo(item2)==0) item2=null; } public void set2(T i2) { item2=i2; if(item1.compareTo(item2)==0) item2=null; } public String toString() // toString will output item1 and item2 if T implements toString, otherwise { // we get the items' addresss return "" + item1 + " " + item2; } }