witam....
mam male pytanie/problem....
mam np. klase Osoba i 2 dziedziczace z niej klasy Kobieta Mezczyzna....Osoba zawiera liste kobiet i mezczyzn...i mam problem czy moglbym posortowac tylko ta czesc listy ktora zawiera typ Kobieta (posortowac Kobiety)... nie rozdzielajac na pomocicza liste...dziekuje z gory za pomoc
Skoro osoba zawiera liste kobiet i mezczyzn to znaczy, ze jest konkretnym obiektem. Skoro jest obiektem klasy Osoba to nie moze byc obiektem klasy Kobieta czy Mezczyzna. To tylko takie dywagacje.
Zeby posortowac liste w ten sposob w jaki chcesz, musisz zaimplementowac wlasny algorytm sortowania.
Chodzi o coś takiego? W kolekcji jest mieszanka kobiet i mężczyzn: k1,k2,m1,k3,m2,......,k178,m99,....
Chcesz wszystkich mężczyzn pozostawić na swoich miejscach, a kobiety posortować wg pewnego kryterium?
chodzi mi o cos takiego ze
ArrayList<Osoba> lista = new ArrayList<Osoba>();
lista.add(new Mezczyzna(arg));
lista.add(new Kobieta(arg));
dodac kilku mezczyzn i kilka kobiet.... a nastepnie posortowac kobiety tej liscie wg jakiegos kryterium.
Nie odpowiedziałeś na pytanie. Mężczyżni zostają na zajmowanych pozycjach?
przepraszam... :)
powinni raczej zostac
Moim zdaniem bez wyjęcia kobiet się nie obędzie.
Najprostsze rozwiązanie:
- Oddzielamy kobiety i zapamiętujemy ich indeksy
- Sortujemy
- Wstawiamy ponownie
List osoby = (...)
List<Kobieta> kobiety = new ArrayList<Kobieta>();
List<Integer> indeksy = new ArrayList<Integer>();
int index = 0;
for(Object osoba: osoby){
if (osoba instanceof Kobieta){
kobiety.add((Kobieta) osoba);
indeksy.add(index);
}
index++;
}
Collections.sort(kobiety);
int lkobiet = kobiety.size();
for(int i=0; i<lkobiet; i++){
osoby.set(indeksy.get(i), kobiety.get(i));
}
dziekuje bardzo :) zrobilem troche inaczej ale tez oddzielilem kobiety od Osob