Package org.apache.wiki.util.comparators

# 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 lexicographically distinct and correctly unicode ordered (e.g. English). Other languages should use `CollatedHumanComparator`. Pretty efficient but still slower than String.compareTo().

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static enum`
`HumanComparator.CharType`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final Comparator<String>`
`DEFAULT_HUMAN_COMPARATOR`

## Constructor Summary

Constructors
Constructor
Description
`HumanComparator()`
Default constructor which does nothing.
`HumanComparator(HumanComparator.CharType[] sortOrder)`
Constructor specifying all the character type order.

## Method Summary

Modifier and Type
Method
Description
`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, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong`

## Field Details

### DEFAULT_HUMAN_COMPARATOR

public static final Comparator<String> DEFAULT_HUMAN_COMPARATOR

## 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

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`.