Class HumanComparator

java.lang.Object
org.apache.wiki.util.comparators.HumanComparator
All Implemented Interfaces:
Comparator<String>

public class HumanComparator
extends Object
implements Comparator<String>
A comparator that sorts Strings using "human" ordering, including decimal ordering. Only works for languages where every character is lexigraphically distinct and correctly unicode ordered (e.g. English). Other languages should use CollatedHumanComparator. Pretty efficient but still slower than String.compareTo().
  • Field Details

  • Constructor Details

    • HumanComparator

      public HumanComparator()
      Default constructor which does nothing. Here because it has a non-default constructor.
    • HumanComparator

      public HumanComparator​(HumanComparator.CharType[] sortOrder)
      Constructor specifying all the character type order.
      Parameters:
      sortOrder - see setSortOrder
  • Method Details

    • getInstance

      public static Comparator<String> getInstance()
      Returns a singleton comparator that implements the default behaviour.
      Returns:
      the singleton comparator.
    • compare

      public int compare​(String str1, String str2)
      Specified by:
      compare in interface Comparator<String>
    • getSortOrder

    • setSortOrder

      public void setSortOrder​(HumanComparator.CharType[] sortOrder)
      Set the order in which letters, numbers and everything else is presented. Default is other, digits and then letters. For example, the strings "abb", "a1b" and "a b" will sort in the order "a b", "a1b" then "abb" by default.
      Parameters:
      sortOrder - Must be an array of CharType containing exactly 3 elements each of which must be distinct.
      Throws:
      IllegalArgumentException - if being called on the result of HumanStringComparator.getInstance() or sortOrder is not exactly 3 different CharType.