środa, 31 maja 2017

Tydzień 12: kolekcje

Ćwiczenia

  1. Zaimplementuj prostą książkę telefoniczną w telefonie komórkowym. Książka powinna zawierać następujące operacje:
    • wyszukiwanie numeru telefonu podanej osoby,
    • zwracanie uporządkowanej alfabetycznie listy osób, których numery telefonu mamy,
    • rozpoznawanie numeru telefonu (identyfikacja, kto do nas dzwoni),
    • dodawanie osoby razem z numerem telefonu,
    • usuwanie osoby.
    Dla uproszczenia można założyć, że każda osoba ma tylko jeden numer telefonu. 
  2. Anagramy to słowa, które składają się z tych samych liter, ale w różnej kolejności. Napisz program, który dla danej listy słów wypisze wszystkie grupy anagramów pojawiające się na tej liście.
  3. Napisz program, który dla danego pliku tekstowego wypisze nastepujące informacje:
    1. z ilu słów składa się plik,
    2. słowo na pozycji 45,
    3. z ilu różnych słów składa się plik,
    4. wszystkie słowa pliku w kolejności alfabetycznej (każde słowo na liście pojawia się tylko raz),
    5. dla każdego słowa, ile razy to słowo występuje w pliku,
    6. wszystkie słowa, które mają więcej niż 6 liter, w kolejności alfabetycznej, bez powtórzeń. Do rozwiązania zadania należy uzyć odpowiednich kolekcji.

Laboratorium

  1. Przejść tutorial do Swinga w Netbeans.
  2. Uruchom programy Zagadka.java i Zagadka2.java. Wyjaśnij, dlaczego programy tak się zachowują. Co trzeba zmienić, żeby programy zachowywały się zgodnie z oczekiwaniami autora?
  3. Anagramy to słowa, które składają się z tych samych liter, ale w różnej kolejności. Napisz program, który dla danej listy słów wypisze wszystkie grupy anagramów pojawiające się na tej liście.
  4. Napisz własną implementację listy wraz z iteratorem. Twoja lista powinna mieć nastepujące operacje:
    • dodawanie nowego elementu,
    • rozmiar,
    • test niepustości,
    • iterowanie przy pomocy pętli foreach.
    Wskazówki:
    • Pętlą foreach można iterować po obiektach implementujących interfejs Iterable.
    • Do implementacji iteratora trzeba użyć klas wewnętrznych (ang. inner classes). Klasa wewnętrzna ma dostęp do prywatnych składowych otaczającego obiektu.
    • Warto przeczytać rozdział o klasach wewnętrznych z tutorialu na stronie Oracle.
    • Ściągawkę, jak napisać własny iterator można znaleźć w klasie java.util.AbstractList. W Eclipse trzeba mieć podpięte źródła Javy