org.apache.wiki.util.comparators
Class HumanComparator

java.lang.Object
  extended by 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().


Nested Class Summary
static class HumanComparator.CharType
           
 
Field Summary
static Comparator<String> DEFAULT_HUMAN_COMPARATOR
           
 
Constructor Summary
HumanComparator()
          Default constructor which does nothing.
HumanComparator(HumanComparator.CharType[] sortOrder)
          Constructor specifying all the character type order.
 
Method Summary
 int compare(String str1, String str2)
           
static Comparator<String> getInstance()
          Returns a singleton comparator that implements the default behaviour.
 HumanComparator.CharType[] getSortOrder()
           
 void setSortOrder(HumanComparator.CharType[] sortOrder)
          Set the order in which letters, numbers and everything else is presented.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Comparator
equals
 

Field Detail

DEFAULT_HUMAN_COMPARATOR

public static final Comparator<String> DEFAULT_HUMAN_COMPARATOR
Constructor Detail

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 Detail

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

public HumanComparator.CharType[] 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.


Copyright © {inceptionYear}-2014 The Apache Software Foundation. All rights reserved.