# Class DamerauLevenshteinDistance

java.lang.Object
org.apache.commons.text.similarity.DamerauLevenshteinDistance

All Implemented Interfaces:
  `BiFunction<CharSequence, CharSequence, Integer>, EditDistance<Integer>, ObjectSimilarityScore<CharSequence, Integer>, SimilarityScore<Integer>`

public class DamerauLevenshteinDistance extends Object implements EditDistance<Integer>
An algorithm for measuring the difference between two character sequences using the Damerau-Levenshtein Distance.

This is the number of changes needed to change one sequence into another, where each change is a single character modification (deletion, insertion, substitution, or transposition of two adjacent characters).

Since:
  1.15.0
See Also:
  - Damerau-Levenshtein Distance on Wikipedia

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DamerauLevenshteinDistance()`
  Constructs a default instance that uses a version of the algorithm that does not use a threshold parameter.
  `DamerauLevenshteinDistance(Integer threshold)`
  Constructs a new instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Integer`
  `apply(CharSequence left, CharSequence right)`
  Computes the Damerau-Levenshtein distance between two Strings.
  `<E> Integer`
  `apply(SimilarityInput<E> left, SimilarityInput<E> right)`
  Computes the Damerau-Levenshtein distance between two inputs.
  `Integer`
  `getThreshold()`
  Gets the distance threshold.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface BiFunction

  `andThen`

- ## Constructor Details

  - ### DamerauLevenshteinDistance

    public DamerauLevenshteinDistance()
    Constructs a default instance that uses a version of the algorithm that does not use a threshold parameter.

  - ### DamerauLevenshteinDistance

    public DamerauLevenshteinDistance(Integer threshold)
    Constructs a new instance. If the threshold is not null, distance calculations will be limited to a maximum length. If the threshold is null, the unlimited version of the algorithm will be used.
    Parameters:
      `threshold` - If this is null then distances calculations will not be limited. This may not be negative.

- ## Method Details

  - ### apply

    public Integer apply(CharSequence left, CharSequence right)
    Computes the Damerau-Levenshtein distance between two Strings.

    A higher score indicates a greater distance.

    Specified by:
      `apply` in interface `BiFunction<CharSequence, CharSequence, Integer>`
    Specified by:
      `apply` in interface `ObjectSimilarityScore<CharSequence, Integer>`
    Specified by:
      `apply` in interface `SimilarityScore<Integer>`
    Parameters:
      `left` - the first input, must not be null.
      `right` - the second input, must not be null.
    Returns:
      result distance, or -1 if threshold is exceeded.
    Throws:
      `IllegalArgumentException` - if either String input `null`.

  - ### apply

    public <E> Integer apply(SimilarityInput<E> left, SimilarityInput<E> right)
    Computes the Damerau-Levenshtein distance between two inputs.

    A higher score indicates a greater distance.

    Type Parameters:
      `E` - The type of similarity score unit.
    Parameters:
      `left` - the first input, must not be null.
      `right` - the second input, must not be null.
    Returns:
      result distance, or -1 if threshold is exceeded.
    Throws:
      `IllegalArgumentException` - if either String input `null`.
    Since:
      1.13.0

  - ### getThreshold

    public Integer getThreshold()
    Gets the distance threshold.
    Returns:
      The distance threshold.