/src/main/java/org/bitbucket/jdk7fun/Arrays2.java

https://bitbucket.org/blob79/jdk7fun · Java · 26 lines · 19 code · 7 blank · 0 comment · 0 complexity · 7f62ff105dffedd680da05ecb38e3793 MD5 · raw file

  1. package org.bitbucket.jdk7fun;
  2. import java.util.*;
  3. import com.google.common.collect.*;
  4. class Arrays2 {
  5. public static <T, U extends Comparable<? super U>> void sortBy(T[] array, Extractor<T, U> extractor) {
  6. sortBy(extractor).sort(array);
  7. }
  8. public static <T, U extends Comparable<? super U>> SortBuilder<T> sortBy(Extractor<T, U> extractor) {
  9. return new SortBuilder<T>().and(extractor);
  10. }
  11. public static class SortBuilder<T>{
  12. private Ordering<T> ordering = #{left, right -> 0};
  13. public <U extends Comparable<? super U>> SortBuilder<T> and(Extractor<T, U> extractor){
  14. ordering = ordering.compound(#{T left, T right -> extractor.get(left).compareTo(extractor.get(right))});
  15. return this;
  16. }
  17. public void sort(T[] array){ Arrays.sort(array, ordering); }
  18. }
  19. }