Dvanáctý domácí úkol

Naimplementujte třídu ArrayBuilder.

class ArrayBuilder {
    /** Vyrobi stavitele, ktery (nakonec) postavi pole delky length. */
    ArrayBuilder(int length);
    /** Ve vyslednem poli nastavi index index na hodnotu elem. Pokud uz tento index nastaveny je (i kdyz je nastaveny na null), vyhodi IllegalArgumentException.
     * Muzete predpokladat, ze 0 <= index < length.
     */
    ArrayBuilder set(int index, Object elem);
    /** Ve vyslednem poli nastavi indexy mezi index1 a index2 vcetne na hodnotu elem. Pokud uz nejaky index nastaveny je (vcetne indexu nastavenych na null),
     *  vyhodi IllegalArgumentException. Muzete predpokladat, ze 0 <= index1 <= index2 < length.
     */
    ArrayBuilder fill(int index1, int index2, Object elem);
    /** Ve vyslednem poli nastavi indexy mezi index1 a index2 vcetne na hodnoty vracene funkci f. Pokud uz nejaky index nastaveny je (vcetne indexu nastavenych na null), 
     *  vyhodi IllegalArgumentException. Muzete predpokladat, ze 0 <= index1 <= index2 < length.
     */
    ArrayBuilder fill(int index1, int index2, Function f);
    /** Postavi pole, nenastavene indexy nastavi na null. */
    Object[] build();
}
 
interface Function {
    Object apply(int i);
}

Do repozitáře do souboru homeworks/Homework12.java odevzdávejte třídu ArrayBuilder a případné další vámi naprogramované třídy. Neodevzdávejte rozhraní Function. Termín odevzdání 1. 6. 1:59 ráno (čas podle serveru s repozitáři).

~~DISCUSSION:closed~~