Pole a kolekce
Proč to potřebuji?
Pole a kolekce jsou základní datové struktury pro ukládání a manipulaci s více prvky. Znalost jejich rozdílů a utility tříd Arrays/Collections je nezbytná pro efektivní práci s daty.
Teorie
Pole (array) = pevná velikost, přímý přístup přes index, primitivní typy i objekty. Kolekce = dynamická velikost, pouze objekty, bohaté API (java.util).
Třída Arrays poskytuje utility pro pole (sort, search, fill, toString). Třída Collections pro kolekce.
Příklady
import java.util.*;
// === Pole ===
int[] cisla = {5, 3, 8, 1, 9};
String[] jmena = new String[3];
jmena[0] = "Jan";
// Utility z java.util.Arrays
Arrays.sort(cisla); // [1, 3, 5, 8, 9]
int idx = Arrays.binarySearch(cisla, 5); // 2
String text = Arrays.toString(cisla); // "[1, 3, 5, 8, 9]"
int[] kopie = Arrays.copyOf(cisla, 10); // kopie s novou délkou
Arrays.fill(jmena, "N/A"); // všechny prvky = "N/A"
// === Převod pole → List ===
// Neměnný list (fixed-size)
List<String> list1 = Arrays.asList("a", "b", "c");
// list1.add("d"); // CHYBA – UnsupportedOperationException
// Měnitelný list
List<String> list2 = new ArrayList<>(Arrays.asList("a", "b", "c"));
list2.add("d"); // OK
// Java 9+
List<String> list3 = List.of("a", "b", "c"); // neměnný
// === Převod List → pole ===
String[] pole = list2.toArray(new String[0]);
// === Řazení kolekce ===
List<Integer> seznam = new ArrayList<>(List.of(5, 3, 8, 1));
Collections.sort(seznam); // [1, 3, 5, 8]
Collections.reverse(seznam); // [8, 5, 3, 1]
int max = Collections.max(seznam); // 8
Collections.shuffle(seznam); // náhodné pořadí
// === Řazení s Comparatorem ===
List<String> slova = new ArrayList<>(List.of("banán", "auto", "citrón"));
slova.sort(Comparator.comparingInt(String::length)); // podle délky
// ["auto", "banán", "citrón"]
slova.sort(Comparator.reverseOrder()); // sestupně
// ["citrón", "banán", "auto"]
Shrnutí
Klíčové body
- Pole: pevná velikost,
Arraysutility (sort, binarySearch, toString) - Kolekce: dynamické,
Collectionsutility (sort, reverse, max) - Převod:
Arrays.asList()/new ArrayList<>(Arrays.asList(...)) - Zpět:
list.toArray(new Type[0])