Zadanie na laboratorium 10: 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. KaĹźdy kandydat, oprĂłcz byÄ moĹźe partii, ma swoje imiÄ, nazwisko, i pĹeÄ. 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 4 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. - Feminista: Oddaje gĹos na kobietÄ o alfabetycznie najniĹźszym nazwisku. JeĹli nie ma kobiet wĹrĂłd kandydatĂłw, oddaje niewaĹźny gĹos. - 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 powinna byÄ metoda giveResults(), ktĂłra zwraca wyniki wyborĂłw w formie tekstowej (jako String) w nastÄpujÄ cym formacie. Najpierw powinna byÄ frekwencja (stosunek liczby gĹosĂłw waĹźnych do wszystkich), a potem kolejno kandydaci wraz z ich wynikami procentowymi, posortowani nierosnÄ 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: 31 maja, 12:15 ================================== 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. Tu proszÄ pogooglowaÄ "java collections comparator" i siÄ naumieÄ jak siÄ tworzy komparatory i sortuje uĹźywajÄ c ich. - String.format("...",...)