BloomFilter.build constructor

BloomFilter.build(
  1. Iterable<Uint8List> keys, {
  2. int bitsPerKey = 10,
  3. int minBits = 64,
  4. int hashCount = 7,
})

Builds a filter over keys.

Implementation

factory BloomFilter.build(
  Iterable<Uint8List> keys, {
  int bitsPerKey = 10,
  int minBits = 64,
  int hashCount = 7,
}) {
  var count = 0;
  for (final _ in keys) {
    count++;
  }
  var bits = count * bitsPerKey;
  if (bits < minBits) bits = minBits;
  // Keep the bit count a multiple of 8 so the byte length is exact.
  bits = (bits + 7) & ~7;
  final filter = BloomFilter._(Uint8List(bits ~/ 8), hashCount);
  for (final key in keys) {
    filter.add(key);
  }
  return filter;
}