Dzielenie kolekcji

0

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

0

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.

0

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?

0

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.

0

Nie odpowiedziałeś na pytanie. Mężczyżni zostają na zajmowanych pozycjach?

0

przepraszam... :)
powinni raczej zostac

0

Moim zdaniem bez wyjęcia kobiet się nie obędzie.

Najprostsze rozwiązanie:

  1. Oddzielamy kobiety i zapamiętujemy ich indeksy
  2. Sortujemy
  3. 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));
} 
0

dziekuje bardzo :) zrobilem troche inaczej ale tez oddzielilem kobiety od Osob

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