Naimplementujte rozhraní UnionIterator, IntersectionIterator a DifferenceIterator, která vrací iterátor sjednocení, průniku a rozdílu dvou iterátorů. Můžete předpokládat, že vstupní iterátory vrací prvky ve vzestupném pořadí, metodu remove implementovat nemusíte. Pozor:
UnionIterator ho musí vrátit právě jednou a
DifferenceIterator by měl vracet prvky, které jsou v prvním iterátoru a nejsou v druhém!
Tip: vyrobte si dekorátor iterátoru, který vám umožní (jeden) již přečtený prvek vrátit zpátky do iterátoru.
class UnionIterator<E extends Comparable<E>> implements Iterator<E> { UnionIterator(Iterator<E> first, Iterator<E> second){} } class IntersectionIterator<E extends Comparable<E>> implements Iterator<E> { IntersectionIterator(Iterator<E> first, Iterator<E> second){} } class DifferenceIterator<E extends Comparable<E>> implements Iterator<E> { DifferenceIterator(Iterator<E> first, Iterator<E> second){} }
Do repozitáře do souboru homeworks/Homework10.java odevzdávejte třídu UnionIterator, IntersectionIterator, DifferenceIterator a případné další vámi naprogramované třídy. Termín odevzdání 3. 5. 1:59 ráno (čas podle serveru s repozitáři).
~~DISCUSSION:closed~~