Trie<K, P extends Comparable<P>, V>.fromIterables constructor

Trie<K, P extends Comparable<P>, V>.fromIterables(
  1. Iterable<K> keys,
  2. Iterable<V> values, {
  3. required GetParts<K, P> parts,
  4. TrieNode<K, P, V>? root,
})

Creates a Trie from two equal length iterables. The parts define how the keys are computed and optionally provides a custom root node.

Implementation

factory Trie.fromIterables(Iterable<K> keys, Iterable<V> values,
    {required GetParts<K, P> parts, TrieNode<K, P, V>? root}) {
  final result = Trie<K, P, V>(parts: parts, root: root);
  final keyIterator = keys.iterator;
  final valueIterator = values.iterator;
  var moreKeys = keyIterator.moveNext();
  var moreValues = valueIterator.moveNext();
  while (moreKeys && moreValues) {
    result[keyIterator.current] = valueIterator.current;
    moreKeys = keyIterator.moveNext();
    moreValues = valueIterator.moveNext();
  }
  if (moreKeys || moreValues) {
    throw ArgumentError('Iterables do not have same length');
  }
  return result;
}