Zadanie na laboratorium 12: Po pierwsze, proszÄ pracowaÄ dalej nad zadaniem o wyborach. Ci, ktĂłrzy juĹź skoĹczyli, bÄ dĹş chcieliby je koĹczyÄ w domu, sÄ proszeni o zrobienie nastÄpujÄ cego zadania. (1) ProszÄ zaimplementowaÄ stworzyÄ klasÄ abstrakcyjnÄ Filter<A>, z ÄwiczeĹ sprzed jakiegoĹ czasu. Klasa ta powinna mieÄ jednÄ metodÄ abstrakcyjnÄ test(A a), ktĂłra stwierdza czy a speĹnia dany warunek. 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Ä . 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. OczywiĹcie, proszÄ napisaÄ prostego main-a, ktĂłry pokazuje Ĺźe rozwiÄ zanie dziaĹa.