Package snap.util

Class Sort

java.lang.Object
snap.util.Sort
All Implemented Interfaces:
Cloneable, Comparator, JSArchiver.GetKeys

public class Sort extends Object implements Comparator, Cloneable, JSArchiver.GetKeys
This class provides a basic description for comparison and sorting with a simple key and order (ascending or descending). You can create a new order like this:

   Sort titleFirst = new Sort("Title");
   Sort bestRevenueFirst = new Sort("Revenue", ORDER_DESCEND);
 

This class also provides useful static methods for comparison and sorting:

   Sort.sort(myList, "Title"); // Sort myList by its contents' getTitle method (alphabetically)
   Sort.sort(myList, bestRevenueFirst); // Sort myList by its contents' getRevenue method (largest first)
   List mySortList = new ArrayList();
   mySortList.add(bestRevenueFirst);
   mySortList.add(titleFirst);
   Sort.sort(myList, mySortList); // Sort myList by revenue and title
 
  • Field Details

  • Constructor Details

    • Sort

      public Sort()
      Creates a plain sort with no key. Used for unarchival, shouldn't be called directly.
    • Sort

      public Sort(String aKey)
      Creates a sort with the given key and ORDER_ASCEND.
    • Sort

      public Sort(String aKey, int anOrder)
      Creates a sort with the given key and order.
  • Method Details

    • getKey

      public String getKey()
      Returns the key for this sort.
    • setKey

      public void setKey(String aKey)
      Sets the key for this sort.
    • getOrder

      public int getOrder()
      Returns the order for this sort.
    • setOrder

      public void setOrder(int anOrder)
      Sets the order for this sort.
    • toggleOrder

      public void toggleOrder()
      Toggles the order for this sort between ORDER_ASCEND<->ORDER_DESCEND.
    • compare

      public int compare(Object obj1, Object obj2)
      Returns how the two given objects compare with this sort.
      Specified by:
      compare in interface Comparator
    • Compare

      public static int Compare(Object anObj1, Object anObj2)
      Compare two value objects (assumed to be String, Number, Boolean, Date, Comparable, etc.).
    • sort

      public static void sort(List aList, String aKey)
      Returns the given list sorted by the given key.
    • sort

      public static void sort(List aList, Sort aSort)
      Returns the given list sorted by the given sort.
    • sort

      public static void sort(List aList, String... theKeys)
      Returns the given list sorted by the given key.
    • sort

      public static void sort(List aList, Sort... theSorts)
      Returns the given list sorted by the given sort.
    • sort

      public static void sort(List aList, List aSortList)
      Returns the given list sorted by the given list of sorts.
    • sortedList

      public static <T extends Comparable<? super T>> List<T> sortedList(Collection<T> aCollection)
      Returns a new sorted list from given collection.
    • sortedList

      public static <T> List<T> sortedList(Collection<T> aCollection, String aKey)
      Returns a new list from the given list sorted by the given key.
    • sortedList

      public static <T> List<T> sortedList(Collection<T> aCollection, String... theKeys)
      Returns a new list from the given list sorted by the given key.
    • clone

      public Object clone()
      Standard clone implementation.
      Overrides:
      clone in class Object
    • getJSONKeys

      public List<String> getJSONKeys()
      RMJSONArchiver GetKeys method.
      Specified by:
      getJSONKeys in interface JSArchiver.GetKeys
    • equals

      public boolean equals(Object anObj)
      Standard equals implementation.
      Specified by:
      equals in interface Comparator
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Returns a string representation of sort (just the sort key).
      Overrides:
      toString in class Object