Package org.apache.commons.text.diff

# Class StringsComparator

java.lang.Object
org.apache.commons.text.diff.StringsComparator

public class StringsComparator extends Object

It is guaranteed that the comparisons will always be done as `o1.equals(o2)` where `o1` belongs to the first sequence and `o2` belongs to the second sequence. This can be important if subclassing is used for some elements in the first sequence and the `equals` method is specialized.

Comparison can be seen from two points of view: either as giving the smallest modification allowing to transform the first sequence into the second one, or as giving the longest sequence which is a subsequence of both initial sequences. The `equals` method is used to compare objects, so any object can be put into sequences. Modifications include deleting, inserting or keeping one object, starting from the beginning of the first sequence.

This class implements the comparison algorithm, which is the very efficient algorithm from Eugene W. Myers An O(ND) Difference Algorithm and Its Variations. This algorithm produces the shortest possible `edit script` containing all the `commands` needed to transform the first sequence into the second one.

This code has been adapted from Apache Commons Collections 4.0.

Since:
  1.0
See Also:
  - `EditScript`
  - `EditCommand`
  - `CommandVisitor`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StringsComparator(String left, String right)`
  Constructs a new instance of StringsComparator.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `EditScript<Character>`
  `getScript()`
  Gets the `EditScript` object.

  ### Methods inherited from class java.lang.Object

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

- ## Constructor Details

  - ### StringsComparator

    public StringsComparator(String left, String right)
    Constructs a new instance of StringsComparator.

    It is guaranteed that the comparisons will always be done as `o1.equals(o2)` where `o1` belongs to the first sequence and `o2` belongs to the second sequence. This can be important if subclassing is used for some elements in the first sequence and the `equals` method is specialized.

    Parameters:
      `left` - first character sequence to be compared
      `right` - second character sequence to be compared

- ## Method Details

  - ### getScript

    public EditScript<Character> getScript()
    Gets the `EditScript` object.

    It is guaranteed that the objects embedded in the `insert commands` come from the second sequence and that the objects embedded in either the `delete commands` or `keep commands` come from the first sequence. This can be important if subclassing is used for some elements in the first sequence and the `equals` method is specialized.

    Returns:
      The edit script resulting from the comparison of the two sequences