Lekcja opisuje tworzenie i używanie klas, które pozwalają na przekazanie typu jako parametru. Mapy co prawda nie są strukturą danych, ale dla ujednolicenia możemy tak przyjąć na potrzeby zajęć.
Lekcja 2
Lekcja opisuje tworzenie i używanie klas, które pozwalają na przekazanie typu jako parametru. Mapy co prawda nie są strukturą danych, ale dla ujednolicenia możemy tak przyjąć na potrzeby zajęć.
Rozważmy klasę, która jest w stanie przechowywać obiekt typu String oraz Integer.
class StringWrapper {
String value;
}
class IntegerWrapper {
Integer value;
}
Klasy są bardzo podobne, chcielibyśmy zrobić coś bardziej ogólnego, stąd możemy skorzystać z zapisu z diamentem:
class Wrapper<T> {
T value;
}
Wrapper<String> stringWrapper;
Wrapper<Integer> integerWrapper;
Stwórz klasę, która będzie tworzyć pole z listą obiektów o zadanym typie.
Do klasy będzie można dodać obiekt zadanego typu.
Tablica | Lista | Mapa |
---|---|---|
Najszybsza | Wolniejsza (dużo zmienia implementacja) | |
Trzeba podać rozmiar przy tworzeniu | Rozmiar jest opcjonalny | |
Rozmiar jest stały | Rozmiar zmienia się dynamicznie | |
Indeks obiektu jest liczbą | Indeks jest dowolnym obiektem | |
Brak wsparcia dla diamentu | Wymagany jeden parametr typu (wartość) | Wymagane dwa parametry typu (indeks, wartość) |
// Tworzenie listy konkretnego typu
List<Integer> list = new ArrayList<>();
// Dodawanie elementu do listy
list.add(5);
// Pobieranie elementu zapisanego w liście
list.get(0);
// Sprawdzanie, czy element znajduje się w liście
list.contains(5);
// Nadpisanie wartości pod indeksem 0 na wartość 10
list.set(0, 10);
// Usuwanie elementu o wskazanym indeksie
list.remove(0);
// Usunięcie wszystkich elementów
list.clear();
Zadanie 1
Utwórz program, który za pomocą klasy Scanner będzie czytał kolejne liczby z klawiatury do listy. Gdy program otrzyma 0, program pokaże:
// Tworzenie mapowania String w String
Map<String, String> map = new HashMap<>();
// Wstawienie wartości "Warszawa" pod klucz "Polska"
map.put("Polska", "Warszawa");
// Pobranie wartości pod kluczem "Polska"
map.get("Polska");
// Sprawdzenie, czy klucz "Japonia" istnieje
map.containsKey("Japonia");
// Pobranie zbioru istniejących kluczy
map.keySet();
// Usunięcie klucza (więc i wartości)
map.remove("Polska");
// Usunięcie wszystkich wartości
map.clear();
Zadanie 2
Dany jest plik, który zawiera następującą treść:
Polska 2
Hiszpania 3
Polska 1
Niemcy 10
Włochy 123
Chiny 40
Chiny 78
Twoim zadaniem jest zagregowanie tych informacji, aby wyświetlić sumę liczb przy danym kraju.
Zadanie 3
Napisz program, który wygeneruje strukturę uczelni jako: uczelnia składa się z grup, do której należą studenci.
Uczelnia, grupy i studenci to klasy, do których dodaj pola, które będą pseudolosowane na poziomie konstruktora.
Na koniec wypisz strukturę uczelni do tabeli w pliku .csv.