Changeset 70 for collected/trunk

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

Some refactoring. Added The Odyssey as test data.

Location:
collected/trunk/java-dsu
Files:
1 added
3 modified
1 moved

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 
  • collected/trunk/java-dsu/src/com/bitstructures/DSUExample1.java

    r69 r70  
    99        public static void main(String[] args) { 
    1010                List<String> a = Arrays.asList("This is a test string from Andrew".split("\\s")); 
    11                 DSU.sort(a, new ComparableExtractor<String,String>() { 
    12                         public String extract(String s) { 
     11                DSU.sort(a, new SortKey<String,String>() { 
     12                        public String getValue(String s) { 
    1313                                return s.toLowerCase(); 
    1414                        } 
  • collected/trunk/java-dsu/src/com/bitstructures/DSUExample2.java

    r69 r70  
    2222                String line = r.readLine(); 
    2323                while(line != null) { 
    24                         String[] wordsThisLine = line.split("\\s"); 
     24                        String[] wordsThisLine = line.split("\\s+"); 
    2525                        for (String word : wordsThisLine) { 
    26                                 words.add(word); 
     26                                if (!word.trim().equals("")) { 
     27                                        words.add(word); 
     28                                } 
    2729                        } 
    2830                        line = r.readLine(); 
     
    3537                List<String> a = readWords(filename); 
    3638                long t1 = System.currentTimeMillis(); 
    37                 DSU.sort(a, new ComparableExtractor<String,String>() { 
    38                         public String extract(String s) { 
     39                DSU.sort(a, new SortKey<String,String>() { 
     40                        public String getValue(String s) { 
    3941                                c.increment(); 
    4042                                return s.toLowerCase(); 
     
    4547//                      System.out.println(s); 
    4648//              } 
    47 System.out.println("DSU"); 
    48 System.out.println("called " + c.i + " times"); 
    49 System.out.println((t2 - t1) + " millis"); 
     49                System.out.println("DSU"); 
     50                System.out.println("called " + c.i + " times"); 
     51                System.out.println((t2 - t1) + " millis"); 
    5052        } 
    5153 
     
    6466//                      System.out.println(s); 
    6567//              } 
    66 System.out.println("Collections.sort"); 
    67 System.out.println("called " + c.i + " times"); 
    68 System.out.println((t2 - t1) + " millis"); 
     68                System.out.println("Collections.sort"); 
     69                System.out.println("called " + c.i + " times"); 
     70                System.out.println((t2 - t1) + " millis"); 
    6971        } 
    7072 
    7173        public static void main(String[] args) throws IOException { 
    72                 dsu("10940.txt"); 
    73                 withComparator("10940.txt"); 
     74                dsu("dyssy08a.txt"); 
     75                withComparator("dyssy08a.txt"); 
    7476        } 
    7577} 
  • collected/trunk/java-dsu/src/com/bitstructures/SortKey.java

    r67 r70  
    33import java.lang.Comparable; 
    44 
    5 public interface ComparableExtractor<T,V extends Comparable<V>> { 
    6         public V extract(T obj); 
     5public interface SortKey<T,C extends Comparable<C>> { 
     6        public C getValue(T obj); 
    77}