Show
Ignore:
Timestamp:
03/25/08 20:32:12 (10 months ago)
Author:
simon
Message:

Some refactoring. Added The Odyssey as test data.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • collected/trunk/java-dsu/src/com/bitstructures/DSU.java

    r67 r70  
    77 
    88public class DSU { 
    9         private static class DecoratedObject<T,V extends Comparable<V>> { 
     9        private static class DecoratedObject<T,C extends Comparable<C>> { 
    1010                public T obj; 
    11                 public V comparable; 
     11                public C comparable; 
    1212        } 
    1313 
    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) { 
    2317                        return o1.comparable.compareTo(o2.comparable); 
    2418                } 
    2519        } 
    2620 
    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) { 
    2823                // decorate 
    2924                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]; 
    3127                for (int i = 0; i < size; i++) { 
    32                         decorated[i] = new DecoratedObject<T,V>(); 
     28                        decorated[i] = new DecoratedObject<T,C>(); 
    3329                        decorated[i].obj = list.get(i); 
    34                         decorated[i].comparable = extractor.extract(list.get(i)); 
     30                        decorated[i].comparable = key.getValue(list.get(i)); 
    3531                } 
    3632                // sort 
    37                 DecoratedObjectComparator<T,V> comparator = new DecoratedObjectComparator<T,V>(); 
     33                DecoratedComparator<T,C> comparator = new DecoratedComparator<T,C>(); 
    3834                Arrays.sort(decorated, comparator); 
    3935                // undecorate