2008-10-13 3 views
7

Mam następujący problem w moim struktur danych i rozwiązywanie problemów za pomocą Java książkę:Drukowanie elementów w dowolnej kolekcji w odwrotnej kolejności?

Napisz procedurę, która korzysta ze zbiorów API wydrukować elementy w każdej kolekcji w odwrotnej kolejności. Nie używaj ListIteratora.

Nie umieszczam tego tutaj, ponieważ chcę, aby ktoś wykonał moją pracę domową, po prostu nie mogę dokładnie zrozumieć, o co prosi mnie kodowanie!

Kiedy prosi mnie o napisanie "rutyny", czy szuka jednej metody? Naprawdę nie rozumiem, w jaki sposób mogę wykonać jedną metodę pracy dla wszystkich różnych typów kolekcji (połączona lista, kolejka, stos).

Jeśli ktokolwiek mógłby mnie poprowadzić we właściwym kierunku, byłbym bardzo wdzięczny.

Odpowiedz

18

Niezależnie od kwestii nie czyni wiele sensu jako połowa zbiorów nie mają gstable kolejnością mają ustaloną-zamawianie (tj TreeSet lub kolejka priorytetowa), można użyć następujące oświadczenie do drukowania zawartości kolekcja w odwrotnej kolejności naturalnej:

List temp = new ArrayList(src); 
Collections.reverse(temp); 
System.out.println(temp); 

Zasadniczo tworzymy listę tablic, ponieważ listy są jedyną strukturą, która może być arbitralnie zmieniana. Przekazujesz kolekcję src do konstruktora, który inicjuje listę z zawartością zbioru src w naturalnej kolejności kolekcji. Następnie przekazujesz listę do kolekcji .reverse() metoda, która odwraca listę i na koniec ją drukujesz.

+0

Collections.reverse zwraca pustkę ... –

+0

oops ... mój zły - poprawił odpowiedź – ddimitrov

0

Cóż, możesz mieć procedurę, która deleguje do innych procedur opartych na typie danych wejściowych, ale nie jestem pewien, czy istnieje typowy typ kolekcji, który można objąć jednym argumentem. Myślę, że możesz po prostu użyć przeciążania metod (mając wiele metod o tej samej nazwie, ale akceptować różne argumenty).

To może technicznie liczyć jako 1 rutyna (wszystkie mają taką samą nazwę).

2

Po pierwsze, uważam, że prosi się o napisanie metody. Na przykład:

void printReverseList(Collection col) {} 

Istnieje wiele sposobów na zrobienie tego. Na przykład tylko przy użyciu interfejsu API kolekcji użyj metody toArray i użyj pętli for, aby wydrukować wszystkie elementy od końca. Ma sens?

Jeśli chodzi o różne klasy za pomocą interfejsu kolekcji, automatycznie będzie działać dla wszystkich tych, ponieważ muszą one implementować interfejs (pod warunkiem, że implementują go w rozsądny sposób;).

+0

bardzo dziękuję za pomysł – VeePee

+0

bez problemu - powodzenia. – AdamC

0

nie wiem dużo Java, ale biorąc pod uwagę „Kolekcje API” i wyobrazić wszystkie te obiekty implementować interfejs można iteracyjne przez jakiś czas. przypuszczam, że wszyscy mogliby mieć itemAtIndex (int index) i length() lub podobną metodę, której można użyć.

You might want to read this.