} // LUCENENET specific - added overload for better compatibity public MergedEnumerator(bool removeDuplicates, IList <IEnumerator <T> > enumerators) // LUCENENET specific - added overload for better compatibity { if (enumerators is null) { throw new ArgumentNullException(nameof(enumerators)); // LUCENENET specific - added guard clause } this.removeDuplicates = removeDuplicates; queue = new TermMergeQueue <T>(enumerators.Count); top = new SubEnumerator <T> [enumerators.Count]; int index = 0; foreach (IEnumerator <T> iter in enumerators) { // If hasNext if (iter.MoveNext()) { queue.Add(new SubEnumerator <T> { Current = iter.Current, Enumerator = iter, Index = index++ }); } } }
/// <summary> /// Sole constructor. </summary> /// <param name="slices"> Which sub-reader slices we should /// merge.</param> public MultiTermsEnum(ReaderSlice[] slices) { queue = new TermMergeQueue(slices.Length); top = new TermsEnumWithSlice[slices.Length]; subs = new TermsEnumWithSlice[slices.Length]; subDocs = new MultiDocsEnum.EnumWithSlice[slices.Length]; subDocsAndPositions = new MultiDocsAndPositionsEnum.EnumWithSlice[slices.Length]; for (int i = 0; i < slices.Length; i++) { subs[i] = new TermsEnumWithSlice(i, slices[i]); subDocs[i] = new MultiDocsEnum.EnumWithSlice(); subDocs[i].Slice = slices[i]; subDocsAndPositions[i] = new MultiDocsAndPositionsEnum.EnumWithSlice(); subDocsAndPositions[i].Slice = slices[i]; } currentSubs = new TermsEnumWithSlice[slices.Length]; }
public MergedIterator(bool removeDuplicates, params IEnumerator <T>[] iterators) { this.removeDuplicates = removeDuplicates; queue = new TermMergeQueue <T>(iterators.Length); top = new SubIterator <T> [iterators.Length]; int index = 0; foreach (IEnumerator <T> iter in iterators) { // If hasNext if (iter.MoveNext()) { SubIterator <T> sub = new SubIterator <T>(); sub.Current = iter.Current; sub.Iterator = iter; sub.Index = index++; queue.Add(sub); } } }