Zadanie na laboratorium 11: Jako ostatnie maĹe zadanie z laboratorium, napiszemy sobie prosty program do podliczania wynikĂłw wyborĂłw prezydenckich. W wyborach startujÄ kandydaci, ktĂłrzy mogÄ reprezentowaÄ partie polityczne, bÄ dĹş teĹź byÄ niezaleĹźni. Partia polityczna cechuje siÄ swojÄ nazwÄ oraz niczym specjalnie wiÄcej (powiedzmy, na potrzeby tego zadania). Kolekcja kandydatĂłw startujÄ cych w wyborach powinna byÄ przekazana w konstruktorze wyborĂłw. Dany wyborca moĹźe zostaÄ zapytany o swĂłj gĹos. Wtedy przekazuje mu siÄ kolekcjÄ kandydatĂłw, a on moĹźe bÄ dĹş wybraÄ jednego z nich i zwrĂłciÄ jako wynik, bÄ dĹş odmĂłwiÄ udziaĹu w gĹosowaniu/oddaÄ niewaĹźny gĹos, czyli zwrĂłciÄ null. NaleĹźy zaimplementowaÄ co najmniej 3 strategie wyborcĂłw: - Partyjniak: ma swojÄ ulubionÄ partiÄ, przeglÄ da kandydatĂłw i wybiera losowo wybranego spoĹrĂłd tych, ktĂłrzy reprezentujÄ jego partiÄ. JeĹli takiego nie ma, oddaje niewaĹźny gĹos. - Antysystemowiec: z prawdopodobieĹstwem 1/2 oddaje niewaĹźny gĹos, z prawdopodobieĹstwem 1/2 gĹosuje na losowo wybranego kandydata niezaleĹźnego. - Znudzony: zawsze oddaje niewaĹźny gĹos. Wybory powinny mieÄ metodÄ, ktĂłra dostawszy kolekcjÄ wyborcĂłw przeprowadza wybory i zapisuje w sobie wyniki. NastÄpnie metoda toString() powinna mĂłc zwrĂłciÄ wyniki wyborĂłw w formie tekstowej. Najpierw powinna byÄ frekwencja (stosunek liczby gĹosĂłw waĹźnych do wszystkich), a potem kolejno kandydaci wraz z ich wynikami procentowymi, posortowani malejÄ co po wynikach. KaĹźdy kandydat powinien mieÄ w nawiasie swojÄ partiÄ, bÄ dĹş informacjÄ, Ĺźe jest niezaleĹźny). Wszystkie wyniki powinny byÄ podane z dokĹadnoĹciÄ do 2 miejsc po przecinku. PrzykĹadowy format z zupeĹnie przypadkowymi przykĹadami jest poniĹźej: Turnout 48.96% Duda (PiS) : 34.76% Komorowski (PO) : 33.77% Kukiz (Independent) : 20.80% Korwin-Mikke (Korwin) : 3.24% Ogorek (SLD) : 2.38% Jarubas (PSL) : 1.60% Palikot (TR) : 1.42% Braun (Independent) : 0.83% Kowalski (RN) : 0.52% Wilk (Independent) : 0.44% Tanajno (Independent) : 0.20% OczywiĹcie, proszÄ teĹź napisaÄ metodÄ main, ktĂłra sprawdzi na prostych przykĹadach, Ĺźe funkcjonalnoĹÄ dziaĹa poprawnie. Termin wysyĹania zadania: 24 maja, 23:59 ================================== Rzeczy, ktĂłre mogÄ siÄ przydaÄ: - Interfejsy Map<K,V> oraz Set<V> - Klasy HashMap<K,V> oraz HashSet<V> - Interfejs Map.Entry<K,V> - Interfejs Comparator<T> - Collections.sort(), w szczegĂłlnoĹci taki z dawanym wĹasnym komparatorem - String.format("...",...)