arraylist jak szukac po wlasnosciach obiektu

0

cze

mam taki problem. Musze napisac program ktory korzysta z kolekcji (tu wybralem arraylist) do przechowywania obiektow osoba (string nazwisko,float srednia, string uwagi) i musze zaimplementowac wyszukiwanie po nazwisku,sredniej i uwadze i w ogole nie mam pomyslu jak to zrobic. Warstwe danych (czyli klase Osoba) rozszerzylem o Comparable i odpowiednio zmodyfikowalem metode equals o to by stwierdzic czy 2 elementy arraylisty sa sobie rowne, no ale mam problem z tym wyszukiwaniem. Ma ktos jakis pomysl??

0

Wyszukać np. po nazwisku... możesz w pętli przelecieć po wszystkich elementach kolekcji i każdy porównać do szukanego nazwiska. Obiekty Osoba z polem nazwisko pasującym do szukanego wrzucać do tymczasowej kolekcji.. Tę możesz je sortować, zależy jak wyszykujesz. Jeśli sprawdzasz czy dane nazwisko zaczyna się tym, co wpisał użytkownik, to sortuj alfabetycznie. jeśli sprawdzasz czy dane nazwisko tylko zawiera to co wpisał użytkownik, sortuj tak, aby najpierw były te, które zaczynają się tak jak wpisał użytkownik, a po nich inne, i te osobno alfabetycznie... - czyli tak jakby przy porównywaniu do sortowania ważniejsze ma być, czy nazwisko się tak zaczyna, czy tylko to zawiera. (namieszałem :P)
Zawartość twojej kolekcji tymczasowej powinieneś zwrócić jako wynik wyszukiwania..

0

liniowe przegladanie tablicy nie jest zbytnio wydajne.

Doprecyzuj, co znaczy "wyszukiwanie po nazwisku, sredniej i uwadze".

0
Luno napisał(a)

liniowe przegladanie tablicy nie jest zbytnio wydajne.
A da się inaczej czegoś w niej wyszukać? Może jeszcze użyć LinkedList czy coś...

0

Jak ma jedna liste i rozne kryteria wyszukiwania to raczej tylko liniowo, chyba ze dla kazdego kryterium bedzie najpierw sortowac a pozniej np wyszukiwanie binarne. Trzeba przetestowac co szybsze. Mozna tez napisac takie jakby swoje indeksy jak w rdbms, ale mysle ze wykracza to poza mozsliwosci pytajacego w tej chwili.
Aby odpowiedziec najlatwiej jak sie da: poczytaj o Arrays.binarySearch(T[] a, T key, Comparator<? super T> c), nastepnie napisz 3 implementacje Comparatora, dla nawziwka, sredniej i czego tam jeszcze. Nastepnie gdy user wybierze szukanie po sredniej, tworzysz instancje (lub pobierac z cache) odpowiedniego komparatora i wyszukujesz. Ta metoda zwraca tylko 1 wynik, wiec jesli chcesz otrzymac liste wynikow to musisz cos inego wymyslic.

1 użytkowników online, w tym zalogowanych: 0, gości: 1