# Class IntersectionSimilarity<T>

java.lang.Object
org.apache.commons.text.similarity.IntersectionSimilarity<T>

Type Parameters:
  `T` - the type of the elements extracted from the character sequence

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

public class IntersectionSimilarity<T> extends Object implements SimilarityScore<IntersectionResult>
Measures the intersection of two sets created from a pair of character sequences.

It is assumed that the type `T` correctly conforms to the requirements for storage within a `Set` or `HashMap`. Ideally the type is immutable and implements `Object.equals(Object)` and `Object.hashCode()`.

Since:
  1.7
See Also:
  - `Set`
  - `HashMap`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `IntersectionSimilarity(Function<CharSequence, Collection<T>> converter)`
  Create a new intersection similarity using the provided converter.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `IntersectionResult`
  `apply(CharSequence left, CharSequence right)`
  Calculates the intersection of two character sequences passed as input.

  ### Methods inherited from class Object

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

  ### Methods inherited from interface BiFunction

  `andThen`

- ## Constructor Details

  - ### IntersectionSimilarity

    public IntersectionSimilarity(Function<CharSequence, Collection<T>> converter)
    Create a new intersection similarity using the provided converter.

    If the converter returns a `Set` then the intersection result will not include duplicates. Any other `Collection` is used to produce a result that will include duplicates in the intersect and union.

    Parameters:
      `converter` - the converter used to create the elements from the characters.
    Throws:
      `IllegalArgumentException` - if the converter is null.

- ## Method Details

  - ### apply

    public IntersectionResult apply(CharSequence left, CharSequence right)
    Calculates the intersection of two character sequences passed as input.
    Specified by:
      `apply` in interface `BiFunction<CharSequence, CharSequence, IntersectionResult>`
    Specified by:
      `apply` in interface `ObjectSimilarityScore<CharSequence, IntersectionResult>`
    Specified by:
      `apply` in interface `SimilarityScore<T>`
    Parameters:
      `left` - first character sequence.
      `right` - second character sequence.
    Returns:
      The intersection result.
    Throws:
      `IllegalArgumentException` - if either input sequence is `null`.