Zadanie na laboratorium 11: (1) ProszÄ zaimplementowaÄ stworzyÄ interfejs Filter<A>, gdzie A jest typem parametrycznym. Interfejs powinien mieÄ jednÄ metodÄ abstrakcyjnÄ test(A a), ktĂłra stwierdza czy element a speĹnia warunek zadany w filtrze. W podklasach odpowiadajÄ cych róşnym filtrom ta metoda bÄdzie odpowiednio przeĹadowana. (2) ProszÄ zaimplementowaÄ klasÄ FilteredIntegerIterator, ktĂłra implementuje iterator chodzÄ cy po liczbach caĹkowitych. Klasa powinna implementowaÄ interfejs ListIterator<Integer>; proszÄ sprawdziÄ w dokumentacji jakie metody sÄ potrzebne. Iterator powinien chodziÄ po elementach speĹniajÄ cych metodÄ test w filtrze zadanym w konstruktorze. Na poczÄ tku jako next powinien wskazywaÄ na najmniejszÄ liczbÄ >=0 speĹniajÄ cÄ test, zaĹ jako prev na najwiÄkszÄ liczbÄ ujemnÄ speĹniajÄ cÄ test Indeksy zwracane przez previousIndex() i nextIndex() pownny byÄ numerem liczby caĹkowitej speĹniajÄ cej filtr, przy czym indeks zero jest nadawany pierwszej liczbie nieujemnej speĹniajÄ cej go. Metody remove(), add() i set() majÄ rzucaÄ wĹasnorÄcznie zdefiniowany wyjÄ tek. (3) ProszÄ zaimplementowaÄ metodÄ statycznÄ factor(int n), zwracajÄ cÄ rozkĹad danej liczby naturalnej na czynniki pierwsze. RozkĹad powinien byÄ dany jako mapa Integer -> Integer, ktĂłra mĂłwi, jaka liczba pierwsza jest w jakiej potÄdze w rozkĹadzie n. W algorytmie uĹźyj klasy FilteredIntegerIterator z filtrem odfiltrowujÄ cym liczby pierwsze (implementacja interfejsu Filter<Integer>). OczywiĹcie, proszÄ napisaÄ prostego main-a, ktĂłry pokazuje Ĺźe rozwiÄ zanie dziaĹa.