Logo Czechitas
Upraveno: 9. 4. 2018

Lekce 06 - Ještě více formulářů

Seznamy a pole v Javě

V Javě existuje pole, které je nutno před použitím naalokovat na požadovanou velikost. Nelze do něj prvky přidávat. Má prostě pevnou kapacitu.

Proto v Javě používáme List (přesněji java.util.List), který je podobný, ale dokáže si do sebe prvky přidávat, měnit a odebírat. List v Javě má ve skutečnosti několik variant. Je to implementováno jako dědičnost.

Základní typ je List, od něj jsou odvozeny potomky LinkedList (přesněji java.util.LinkedList), ArrayList (přesněji java.util.ArrayList), CopyOnWriteArrayList (přesněji java.util.concurrent.CopyOnWriteArrayList) a jedna skytá třída, jejíž instance se alokuje v Arrays.asList().

Když tedy deklarujeme:

List<Uzivatel> seznamUzivatelu;

Můžeme do této proměnné vložit jakýkoliv z výše uvedených potomků Listu.

Arrays.asList() je statická (globální) metoda v pomocné třídě Arrays (přesněji java.util.Arrays), které lze předat prvky oddělené čárkou a ona je naskládá do Listu. Zvláštní je v tom, že daný List nelze zvětšovat ani zmenšovat. Je to obalené klasické pole v Javě, ale tváří se to jako List.

private List<Uzivatel> nemenitelnySeznamUzivatelu = Arrays.asList(
    new Uzivatel("pokus@pokus.com", "password"),
    new Uzivatel("admin@tomcat.cloud", "password")
);

LinkedList, ArrayList a CopyOnWriteArrayList jsou plnotučné varianty Listu. Lišší se v tom, že:

private List<Uzivatel> menitelnySeznamUzivatelu = new CopyOnWriteArraysList<>();

// nekdy pozdeji, napr. v konstruktoru:
menitelnySeznamUzivatelu.add(new Uzivatel("pokus@pokus.com", "password"));
menitelnySeznamUzivatelu.add(new Uzivatel("admin@tomcat.cloud", "password"));

A třetí věc: Všechny Listy dodržují to, že mají konstruktor, který akceptuje jako parametr jiný List, ze kterého se vykopírují do tohoto nového Listu všechny prvky.

Takže já používám konstrukci:

private List<Uzivatel> seznamUzivatelu = new CopyOnWriteArrayList<>(
    Arrays.asList(
        new Uzivatel("pokus@pokus.com", "password"),
        new Uzivatel("admin@tomcat.cloud", "password")
    )
);

Soubory

Archív najdete zde: WebLekce06.zip

Videozáznam

Na Youtube je záznam z lekce:

Celý playlist na Youtube najdete zde: Java 2 - Brno (jaro 2018) - Youtube playlist.