====== Desátý domácí úkol ====== 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: * výsledný iterátor musí být vzestupně setříděný, * data ze vstupních iterátorů musíte zpracovávat za běhu (tzn. nesmíte se pokoušet načíst všechny prvky naráz), * pokud se nějaký prvek vyskytuje v obou iterátorech, ''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> implements Iterator { UnionIterator(Iterator first, Iterator second){} } class IntersectionIterator> implements Iterator { IntersectionIterator(Iterator first, Iterator second){} } class DifferenceIterator> implements Iterator { DifferenceIterator(Iterator first, Iterator 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~~