Sobes.tech
Middle
91

Implementați un CompositeIterator folosind generici care combină doi iteratori de același tip

Companiile au fost întrebate
СБЕРСБЕР

Răspuns de la AI

sobes.tech AI

Ниже пример реализации CompositeIterator на Java с использованием дженериков, который объединяет два итератора одного типа T:

import java.util.Iterator;
import java.util.NoSuchElementException;

public class CompositeIterator<T> implements Iterator<T> {
    private final Iterator<T> first;
    private final Iterator<T> second;

    public CompositeIterator(Iterator<T> first, Iterator<T> second) {
        this.first = first;
        this.second = second;
    }

    @Override
    public boolean hasNext() {
        return first.hasNext() || second.hasNext();
    }

    @Override
    public T next() {
        if (first.hasNext()) {
            return first.next();
        } else if (second.hasNext()) {
            return second.next();
        } else {
            throw new NoSuchElementException();
        }
    }

    @Override
    public void remove() {
        throw new UnsupportedOperationException("Remove not supported");
    }
}

Этот итератор сначала перебирает элементы из первого итератора, затем из второго, объединяя их в один поток элементов.