L liczb całkowitych znajduje element najmniejszy I element największy I tworzy nowe listy Lmin



Pobieranie 23.91 Kb.
Data26.03.2018
Rozmiar23.91 Kb.

Napisać klasę reprezentującą Osobę która będzie posiadała pola wiek, nazwisko, czykobieta, ileOsob (pole mówiące ile mamy aktualnie stworzonych obiektów Osoba)




Zadanie 0


Napisać klasę testową, która będzie miała metody pozwalające na dodanie nowego obiektu, usunięcie i edycję obiektu z kolekcji typu List.

Wyświetlić informacje z kolekcji wykorzystując pętlę for oraz Iterator.

Dodatkowo proszę skorzystać z nowej możliwości J2SE 1.5 - szablony generics

Sprawdzić w dokumentacji różnice miedzy najpopularniejszymi implementacjami list czyli klasami ArrayList, LinkedList, Vector




Zadanie 1


Napisz program który na danej liście L liczb całkowitych znajduje element najmniejszy

i element największy i tworzy nowe listy Lmin i Lmax zawierające odpowiednio

wszystkie elementy najmniejsze i wszystkie elementy największe obecne na L.
Zakładamy że na liście mogą występować powtarzające się elementy.

Zadanie 2


Napisać własną klasę SortList implementującą interfejs List. Zaimplementować wszystkie wymagane metody. Zasada działania ma być identyczna jak dla klasy ArrayList.

Zmodyfikować metody wstawiającą (add) tak by uwzględniała automatycznie posortowanie kolekcji.




Zadanie 3


Zdefiniuj klasę StosLiczb opisującą strukturę danych typu LIFO(last-in,first-out)

do przechowywania liczb całkowitych a w niej funkcje :


create() - utwórz pusty stos

push() – włóż element na stos

pop() - pobierz element ze stosu

peek() - obejrzyj element z wierzchołka bez pobierania

isEmpty() – czy stos jest pusty

isFull() - czy stos jest pełny

show() – wyświetla zawartość
Strukturę danych zrealizuj przy pomocy tablicy i przetestuj klasę StosLiczb.
W tej implementacji klasa StosLiczb powinna zawierać 3 pola:
int[] tab; // tablica elementów

int top; // indeks wierzchołka stosu

int size; // rozmiar stosu

Uporządkuj elementy w kolejce przechowującej liczby całkowite używając :




  1. dwóch pomocniczych kolejek i kilku zmiennych

  2. jednej pomocniczej kolejki i kilku zmiennych


Zadanie 4


Napisz program który wstawia do zbioru HashSet 50 liczb w nieuporządkowanej kolejności.

Napisz następnie metodę sortującą ten zbiór i wyświetlającą posortowany zbiór



Zadanie 5


Utwórz i przetestuj klasę MySet opisującą zbiór i podstawowe operacje na zbiorach:

  • sumę

  • różnicę

  • część wspólną

  • zawieranie się zbiorów

  • należenie elementu do zbioru

Zakładamy że elementy zbioru nie mogą się powtarzać.

Wykorzystaj klasy TreeSet lub HashSet.
{A,A,A,B,B,C} + {A,A,C} ={ A,A,A,A,A,B,B,C,C}

{A,A,A,B,B,C} - {A,A,C} ={ A,B,B}



Zadania z wykładu
Zadanie 1. Tworzenie i przetwarzanie prostych kolekcji 

Napisać program, który tworzy różne kolekcje listowe (typu List) i zbiorowe (typu Set) napisów i liczb, podanych w dwóch tablicach o równych rozmiarach. Napisy i liczby (ściślej: referencje do nich) mają być dodawane do każdej z kolekcji na przemian (najpierw napis, później liczba).

Na kolekcjach przeprowadzić następujące operacje: skonkatenować wszystkie łańcuchy znakowe, zsumować wszystkie liczby.

Wyprowadzić wyniki tych operacji dla każdej z kolekcji, poprzedzone informacją o tym jaka to kolekcja i jakie elementy zawiera.

Zapewnić minimum kodowania (operacje dodawania do konkretnej kolekcji oraz jej przetwarzania wyodrębnić w oddzielnych metodach).

Przykład:

dwie tablice napisów i liczb:

String[] s = { "ala", "kot", "pies", "zebra", "ala" };


int[] num = { 1, 2, 7, 9, 2 };

przedstawiono w programie w postaci dwóch konkretnych kolekcji: ArrayList i HashSet. Wynik działania programu:

Kolekcja java.util.ArrayList
[ala, 1, kot, 2, pies, 7, zebra, 9, ala, 2]
Konkatenacja: ala kot pies zebra ala
Suma: 21
Kolekcja java.util.HashSet
[9, pies, zebra, 7, ala, kot, 2, 1]
Konkatenacja: pies zebra ala kot
Suma: 19

Pomoc: -(material spoza wykladu) -


nazwę klasy obiektu obj można uzyskać poprzez odwołanie obj.getClass().getName() [ zwraca napis = nazwa klasy]

Pytania i dodatkowe zadania:



  • dlaczego utworzone kolekcje HashSet i ArrayList różnią się między sobą?

  • jak najłatwiej zmienić implementację listy z ArrayList na LinkedList? Pokazać kod.

  • co się stanie jeśli w tym programie za pomocą takich samych środków jak w przypadku list i HashSet będziemy próbować tworzyć kolekcję TreeSet? Dlaczego ?

  • co trzeba zrobić, żeby utworzenie kolekcji TreeSet powiodło się i jakie będzie ona miała własności? 

A propos ostatniego pytania musimy uzyskać wydruk podobny do następującego:

Kolekcja java.util.ArrayList


[ala, 1, kot, 2, pies, 7, zebra, 9, ala, 2]
Konkatenacja: ala kot pies zebra ala
Suma: 21
Kolekcja java.util.HashSet
[9, pies, zebra, 7, ala, kot, 2, 1]
Konkatenacja: pies zebra ala kot
Suma: 19
Kolekcja java.util.TreeSet
[1, 2, 7, 9, ala, kot, pies, zebra]
Konkatenacja: ala kot pies zebra
Suma: 19

Zadanie 2. Algorytmy i mapy

Napisac program, ktory z pliku tekstowego (podanego jako argument) wczytuje dane o pracownikach (imie, nazwisko, rok urodzenia, zarobki), a nastepnie wyprowadza informacje o nich:



  • posortowane wg nazwisk i imion

  • posortowane wg zarobkow

  • na zyczenie - po podaniu w dialogu wejsciowym nazwiska i imienia - nazwisko i imie oraz zarobki dla danego pracownika.

Uwagi:

  • uzyskiwanie informacji o konkretnym pracowniku (po podaniu jego nazwiska i imienia) zapewnić poprzez odpowiednią implementację mapy,

  • zabezpieczyć się przed powtarzającymi się nazwisko+imię (w mapie),

  • w standardowej wersji programu (to wystarczy) wszystkie informacje wyprowadzamy na konsole,

  • w rozbudowanej wersji programu  posortowane informacje kierować do pliku wyjściowego, a zapytania o konkretnych pracownikach przedstawiać jako komunikaty typu messageDialog

  • w standardowej wersji programu przy powtórzeniach nazwisko+imie przerywac program, w rozbudowanej wersji zapewnić mechanizm sensownej obsługi powtórzeń.

Pomoc:

  • potrzebna odrębna klasa reprezentująca atrybuty pracowników (imie, nazwisko, rok urodzenia, zarobek), ich uzyskiwanie i pokazywanie oraz naturalny porządek sortowania wg : nazwisko+imię

  • tylko listy dają się sortować

  • jednoczesne przechowywanie referencji do obiektów na liście i w mapie nie jest niczym złym

  • naturalny porządek można łamać za pomocą Comparatora

Przykład:

Wydruk z programu po wczytaniu danych z przykładowego pliku


i podaniu w dialogu wejściowym :


Sonia Ala
Zwierz Staefen (błąd!)
Zwierz Stefan (poprawienie błędu)

Wydruk;


W porzadku alfabetycznym:
Albanski Albin 1978 2300
Jankowski Jan 1975 1500
Jemioluszka Anna 1945 4500
Kowalski Jan 1980 2000
Sonia Ala 1957 3000
Zwierz Stefan 1968 2500
---------------------------------------
Wedlug zarobkow:
Jankowski Jan 1975 1500
Kowalski Jan 1980 2000
Albanski Albin 1978 2300
Zwierz Stefan 1968 2500
Sonia Ala 1957 3000
Jemioluszka Anna 1945 4500
---------------------------------------
Informacje w trybie interaktywnym (po podaniu nazwiska i imienia):
Sonia Ala 3000
Not such worker: Zwierz Staefan
Zwierz Stefan 2500

Pobieranie 23.91 Kb.

Share with your friends:




©operacji.org 2020
wyślij wiadomość

    Strona główna