Struktury danych Collections Framework

Typy danych i wyjątki w Javie

Jim White

Java Instructor

Czym jest framework

  • Framework to zestaw wielokrotnie używanych typów zapewniających ogólną funkcjonalność
    • Przykłady typów: klasy i interfejsy
    • Podnosi jakość aplikacji
    • Eliminuje konieczność tworzenia wszystkiego od podstaw
  • Frameworki są dostarczane jako pakiet lub pakiety w Javie
  • Frameworki zawierają wytyczne i zasady użytkowania

Frameworki dostarczają gotowy kod zapewniający ogólną funkcjonalność

1 Photo by Ashkan Forouzani on Unsplash
Typy danych i wyjątki w Javie

Typy w Javie

Dwie kategorie typów w Javie:

  • Typy prymitywne
    • byte, short, int, long, float, double, char, boolean
  • Typy referencyjne
    • Klasy
    • Interfejsy
    • Wyliczenia (Enum)
    • Tablice
    • ...
Typy danych i wyjątki w Javie

Collections Framework

  • Collections Framework: wbudowany zestaw generycznych typów struktur danych w Javie
    • Pakiet typów do przechowywania i manipulowania grupą obiektów
  • Zdefiniowany w pakiecie java.util
    • Do korzystania z typów frameworka wymagany jest import
Typy danych i wyjątki w Javie

A co z tablicami?

  • Tablice Java mogą przechowywać grupę obiektów lub typów prymitywnych
    • Collections Framework oferuje alternatywny zestaw struktur danych
  • Oba rozwiązania mają zalety i wady
Tablice Kolekcje
Niezmenny rozmiar Dynamiczny rozmiar (rośnie i maleje)
Przechowują prymitywy lub obiekty Przechowują tylko obiekty
Jednorodne – elementy tego samego typu Heterogeniczne – obiekty mogą być różnych typów
Specjalna notacja dostępu [] Dostęp przez metody
Specjalna składnia inicjalizacji {} Użycie new (bez specjalnej składni inicjalizacji)
Typy danych i wyjątki w Javie

Typy Collections Framework

  • Collections Framework dzieli się na dwa podstawowe typy: Collection i Map
    • Reprezentowane przez dwa interfejsy: java.util.Collection i java.util.Map
    • Oba posiadają wiele klas implementujących
  • import java.util.*; umożliwia używanie typów Collections Framework

Collections Framework ma dwa podstawowe typy: Collection i Map

Typy danych i wyjątki w Javie

Collection

  • Collection definiuje różne rodzaje grupowania obiektów
    • Określane przez dodatkowe interfejsy
  • Uporządkowana grupa obiektów: List
  • Nieuporządkowana grupa obiektów: Set
  • Grupa obiektów FIFO: Queue
    • Działa jak kolejka w banku lub kasie biletowej
  • Metody .add(Object) i .remove(Object) do modyfikacji dowolnej kolekcji

Collection zawiera List, Set i Map

Typy danych i wyjątki w Javie

Map

  • Struktury Map działają jak książka telefoniczna lub słownik
    • Obiekty „klucz" -> obiekty „wartość"
    • W książce telefonicznej: imię i nazwisko -> numer telefonu
    • W słowniku: słowo -> definicja
  • Klucza używa się do modyfikacji mapy
    • .put(Object key, Object value) – dodawanie do mapy
    • .remove(Object key) – usuwanie z mapy
  • Wiele typów map – np. HashMap

Struktura danych Map działa jak książka telefoniczna lub słownik

Typy danych i wyjątki w Javie

Typy generyczne

  • Kolekcje i mapy są „parametryzowane"
    • Typy generyczne Java służą do określania obiektów w Collection lub Map
    • Składnia generyczna: <Class> z typem parametrycznym
      • < > to tzw. operator diamentowy
ArrayList<String> list = new ArrayList<String>();  // Konstruktor z typami generycznymi
Typy danych i wyjątki w Javie

Typy generyczne a bezpieczeństwo typów

  • Typy generyczne zapewniają większe bezpieczeństwo typów
    • Ograniczają obiekty dozwolone w Collection i Map
ArrayList<String> list = new ArrayList<String>();
list.add("hello");  // Dodanie String jest poprawne
list.add(new Integer(5));  // Próba dodania Integer powoduje błąd kompilatora
Typy danych i wyjątki w Javie

Bez użycia typów generycznych

ArrayList list2 = new ArrayList();  // Legal but non-specific

list2.add("hello");                 // Now any type of object can be added
list2.add(new Integer(5));
Typy danych i wyjątki w Javie

Deklaracja i przypisanie zmiennej

  • Deklaracja i przypisanie zmiennej mogą być wykonane oddzielnie
ArrayList<String> list = new ArrayList<String>(); //Deklaracja i przypisanie w jednej linii

ArrayList<String> list2;    // Deklaracja zmiennej...
list2 = new ArrayList<String>();  //... i przypisanie mogą być 2 instrukcjami
Typy danych i wyjątki w Javie

Czas na ćwiczenia!

Typy danych i wyjątki w Javie

Preparing Video For Download...