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, Arrays utility (sort, binarySearch, toString)
  • Kolekce: dynamické, Collections utility (sort, reverse, max)
  • Převod: Arrays.asList() / new ArrayList<>(Arrays.asList(...))
  • Zpět: list.toArray(new Type[0])