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<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~~

courses/b6b36omo/hw/10/start.txt · Last modified: 2018/10/03 11:13 (external edit)