Changeset 70 for collected/trunk/java-dsu/src/com/bitstructures/DSU.java
- Timestamp:
- 03/25/08 20:32:12 (10 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
collected/trunk/java-dsu/src/com/bitstructures/DSU.java
r67 r70 7 7 8 8 public class DSU { 9 private static class DecoratedObject<T, V extends Comparable<V>> {9 private static class DecoratedObject<T,C extends Comparable<C>> { 10 10 public T obj; 11 public Vcomparable;11 public C comparable; 12 12 } 13 13 14 /* 15 private static Comparator<DecoratedObject> comparator = new Comparator<DecoratedObject>() { 16 public int compare(DecoratedObject o1, DecoratedObject o2) { 17 return o1.comparable.compareTo(o2.comparable); 18 } 19 }; 20 */ 21 private static class DecoratedObjectComparator<T,V extends Comparable<V>> implements Comparator<DecoratedObject<T,V>> { 22 public int compare(DecoratedObject<T,V> o1, DecoratedObject<T,V> o2) { 14 private static class DecoratedComparator<T,C extends Comparable<C>> 15 implements Comparator<DecoratedObject<T,C>> { 16 public int compare(DecoratedObject<T,C> o1, DecoratedObject<T,C> o2) { 23 17 return o1.comparable.compareTo(o2.comparable); 24 18 } 25 19 } 26 20 27 public static <T,V extends Comparable<V>> void sort(List<T> list, ComparableExtractor<T,V> extractor) { 21 public static <T,C extends Comparable<C>> void sort(List<T> list, 22 SortKey<T,C> key) { 28 23 // decorate 29 24 int size = list.size(); 30 DecoratedObject<T,V>[] decorated = (DecoratedObject<T,V>[]) new DecoratedObject[size]; 25 DecoratedObject<T,C>[] decorated 26 = (DecoratedObject<T,C>[]) new DecoratedObject[size]; 31 27 for (int i = 0; i < size; i++) { 32 decorated[i] = new DecoratedObject<T, V>();28 decorated[i] = new DecoratedObject<T,C>(); 33 29 decorated[i].obj = list.get(i); 34 decorated[i].comparable = extractor.extract(list.get(i));30 decorated[i].comparable = key.getValue(list.get(i)); 35 31 } 36 32 // sort 37 Decorated ObjectComparator<T,V> comparator = new DecoratedObjectComparator<T,V>();33 DecoratedComparator<T,C> comparator = new DecoratedComparator<T,C>(); 38 34 Arrays.sort(decorated, comparator); 39 35 // undecorate
