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 oraz Set - Klasy HashMap oraz HashSet - Interfejs Map.Entry - Interfejs Comparator - 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("...",...)