Implementacja kolekcji

0

Zaimplementuj kolekcje przechowującą elementy w kolejności rosnącej wraz z metodami (lub własciwosciami) dodania elementu, pobrania elementu (z jego usunięciem) oraz wypisania wszystkich elementów. Przyjmij, ze przy pobieraniu elementu pobierany jest zawsze najmniejszy. Załóż, ze elementy przechowywane w tej kolekcji musza implementować interfejs umożliwiajacy porównywanie elementów (może to być standardowy interfejsComparable<T>).
Zaimplementuj również dowolna hierarchie klas implementującą interfejs Comparable<T> (lub inny zaproponowana przez Ciebie), zawierająca przynajmniej cztery klasy. Może to być np. hierarchia klas reprezentująca stopnie wojskowe bądz klasy reprezentujące najważniejsze stanowiska Rzeczpospolitej Polskiej (wynik porównania ma odzwierciedlać tzw. precedencje).
Zwróć uwagę, aby implementacja tej hierarchii klas przestrzegała zasady otwarte–zamknięte, tj. aby można było dodać klasę (np. reprezentująca nowy stopień wojskowy) implementujaca Comparable<T> bez konieczności zmiany implementacji w pozostałych klasach.

Niestety kompletnie nie rozumiem treści zadania. Co ja konkretnie mam zaimplementować? Listę dwukierunkową przechowującą dowolne typy, czyli np. class Lista<T> { ... } ?

0

Raczej

List<T extends Comparable<T>>
0

Masz zaimplementowac kolekcje ktora przechowuje obiekty ktore implementuja jakis interfejs ktory sluzy do porownania. Masz przyjac ze zawsze pobierany jest najmniejszy element, zatem jest to raczej kolejka priorytetowa niz lista, wzglednie mozesz zrobic 'sortowany multiset', czyli taki zbior, ktory umie sortowac wg tego interfejsu, zwraca zawsze pierwszy (najmniejszy) element, a jak jest kilka elementow o takiej samej wartosci, to zwraca obojetnie ktory z nich (lub np. wg. kolejnosci dodania). Takie cos mozna zrobic tak ze elementu zbioru sa nie pojedynczymi elementami a kolekcjami elementow.

0
Shalom napisał(a):

Raczej

List<T extends Comparable<T>>

Chodzi o to, aby T miało zaimplementowany mechanizm do porównywania elementów?
Jeśli zaś chodzi o samą implementację listy, będzie to wyglądało tak, że mam wskaźniki na powiedzmy pierwszy i ostatni element i dalej standardowo?

I jeszcze jedno, w jaki sposób mam zaimplementować funkcję wypisującą elementy listy skoro nie wiem czym jest T ? Coś takiego nie przechodzi (choć w c# było ok)

    public void wyswietl()
    {
        Wezel<T> pomoc = poczatek;
        while (pomoc != null)
        {
            System.out.Println(pomoc.t);
            pomoc = pomoc.pobierzNastepny();
        }
    }
0

o_O a skąd niby kompilator ma mieć pewność że obiekt T ma pole t do którego się chcesz odwołać? o_O Albo metodę pobierzNastępny()? Musisz tam dać jakiś interfejs (oprócz comparable) dla tego T...

0

Bo mam klasę Węzeł

class Wezel<T> 
{
	public T t;
	public Wezel<T> nastepny;
	public Wezel<T> poprzedni;
 
	public Wezel() 
	{
		nastepny = null;
		poprzedni = null;
	}
 
	public Wezel(T t, Wezel<T> nastepny, Wezel<T> poprzedni) 
	{
		this.t = t;
		this.nastepny = nastepny;
		this.poprzedni = poprzedni;
	}
 
	public T pobierzT() 
	{
		return this.t;
	}
 
	public Wezel<T> pobierzNastepny() 
	{
		return nastepny;
	}
 
	public void ustawNastepny(Wezel<T> nastepny) 
	{
		this.nastepny = nastepny;
	}
 
	public Wezel<T> pobierzPoprzedni() 
	{
		return poprzedni;
	}
 
	public void ustawPoprzedni(Wezel<T> poprzedni) 
	{
		this.poprzedni = poprzedni;
	}
}

i teraz klasa lista wygląda tak:

class Lista<T>
{
    public Wezel<T> poczatek;
    public Wezel<T> koniec;

    public Lista()
    {
        poczatek = null;
        koniec = null;
    }

    public boolean czyPusta()
    {
        return (poczatek == null);
    }

    public int rozmiar()
    {
        Wezel<T> pomoc = poczatek;
        int i = 0;
        while (pomoc != null)
        {
            i++;
            pomoc = pomoc.pobierzNastepny();
        }
        return i;
    }

...

}
0

Ja bym powiedzial ze sie nie kompiluje bo masz w System.out.Println() Println() z wielkiej litery...

0

Nie znasz metod kolekcji takich jak: .size() i isEmpty() ?

Według mnie metody czyPusta(), rozmiar() są do napisania od nowa :)

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