# Class SetOperations

java.lang.Object
org.apache.commons.collections4.bloomfilter.SetOperations

public final class SetOperations extends Object
Implementations of set operations on BitMapExtractors.

Since:
  4.5.0-M1

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static int`
  `andCardinality(BitMapExtractor first, BitMapExtractor second)`
  Calculates the cardinality of the logical `AND` of the bit maps for the two filters.
  `static int`
  `cardinality(BitMapExtractor bitMapExtractor)`
  Calculates the cardinality of a BitMapExtractor.
  `static double`
  `cosineDistance(BitMapExtractor first, BitMapExtractor second)`
  Calculates the Cosine distance between two BitMapExtractor.
  `static double`
  `cosineSimilarity(BitMapExtractor first, BitMapExtractor second)`
  Calculates the Cosine similarity between two BitMapExtractors.
  `static double`
  `cosineSimilarity(BloomFilter<?> first, BloomFilter<?> second)`
  Calculates the Cosine similarity between two Bloom filters.
  `static int`
  `hammingDistance(BitMapExtractor first, BitMapExtractor second)`
  Calculates the Hamming distance between two BitMapExtractors.
  `static double`
  `jaccardDistance(BitMapExtractor first, BitMapExtractor second)`
  Calculates the Jaccard distance between two BitMapExtractor.
  `static double`
  `jaccardSimilarity(BitMapExtractor first, BitMapExtractor second)`
  Calculates the Jaccard similarity between two BitMapExtractor.
  `static int`
  `orCardinality(BitMapExtractor first, BitMapExtractor second)`
  Calculates the cardinality of the logical `OR` of the bit maps for the two filters.
  `static int`
  `xorCardinality(BitMapExtractor first, BitMapExtractor second)`
  Calculates the cardinality of the logical `XOR` of the bit maps for the two filters.

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

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

- ## Method Details

  - ### andCardinality

    public static int andCardinality(BitMapExtractor first, BitMapExtractor second)
    Calculates the cardinality of the logical `AND` of the bit maps for the two filters.
    Parameters:
      `first` - the first BitMapExtractor.
      `second` - the second BitMapExtractor
    Returns:
      the cardinality of the `AND` of the filters.

  - ### cardinality

    public static int cardinality(BitMapExtractor bitMapExtractor)
    Calculates the cardinality of a BitMapExtractor. By necessity this method will visit each bit map created by the bitMapExtractor.
    Parameters:
      `bitMapExtractor` - the extractor to calculate the cardinality for.
    Returns:
      the cardinality of the bit maps produced by the bitMapExtractor.

  - ### cosineDistance

    public static double cosineDistance(BitMapExtractor first, BitMapExtractor second)
    Calculates the Cosine distance between two BitMapExtractor.

    Cosine distance is defined as `1 - Cosine similarity`

    Parameters:
      `first` - the first BitMapExtractor.
      `second` - the second BitMapExtractor.
    Returns:
      the jaccard distance.

  - ### cosineSimilarity

    public static double cosineSimilarity(BitMapExtractor first, BitMapExtractor second)
    Calculates the Cosine similarity between two BitMapExtractors.

    Also known as Orchini similarity and the Tucker coefficient of congruence or Ochiai similarity.

    If either extractor is empty the result is 0 (zero)

    Parameters:
      `first` - the first BitMapExtractor.
      `second` - the second BitMapExtractor.
    Returns:
      the Cosine similarity.

  - ### cosineSimilarity

    public static double cosineSimilarity(BloomFilter<?> first, BloomFilter<?> second)
    Calculates the Cosine similarity between two Bloom filters.

    Also known as Orchini similarity and the Tucker coefficient of congruence or Ochiai similarity.

    If either filter is empty (no enabled bits) the result is 0 (zero)

    This is a version of cosineSimilarity optimized for Bloom filters.

    Parameters:
      `first` - the first Bloom filter.
      `second` - the second Bloom filter.
    Returns:
      the Cosine similarity.

  - ### hammingDistance

    public static int hammingDistance(BitMapExtractor first, BitMapExtractor second)
    Calculates the Hamming distance between two BitMapExtractors.
    Parameters:
      `first` - the first BitMapExtractor.
      `second` - the second BitMapExtractor.
    Returns:
      the Hamming distance.

  - ### jaccardDistance

    public static double jaccardDistance(BitMapExtractor first, BitMapExtractor second)
    Calculates the Jaccard distance between two BitMapExtractor.

    Jaccard distance is defined as `1 - Jaccard similarity`

    Parameters:
      `first` - the first BitMapExtractor.
      `second` - the second BitMapExtractor.
    Returns:
      the Jaccard distance.

  - ### jaccardSimilarity

    public static double jaccardSimilarity(BitMapExtractor first, BitMapExtractor second)
    Calculates the Jaccard similarity between two BitMapExtractor.

    Also known as Jaccard index, Intersection over Union, and Jaccard similarity coefficient

    Parameters:
      `first` - the first BitMapExtractor.
      `second` - the second BitMapExtractor.
    Returns:
      the Jaccard similarity.

  - ### orCardinality

    public static int orCardinality(BitMapExtractor first, BitMapExtractor second)
    Calculates the cardinality of the logical `OR` of the bit maps for the two filters.
    Parameters:
      `first` - the first BitMapExtractor.
      `second` - the second BitMapExtractor
    Returns:
      the cardinality of the `OR` of the filters.

  - ### xorCardinality

    public static int xorCardinality(BitMapExtractor first, BitMapExtractor second)
    Calculates the cardinality of the logical `XOR` of the bit maps for the two filters.
    Parameters:
      `first` - the first BitMapExtractor.
      `second` - the second BitMapExtractor
    Returns:
      the cardinality of the `XOR` of the filters.