Sobes.tech
Junior

Čo je to zoradenie?

sobes.tech AI

Odpoveď od AI

V Jave sa "zoradením" často myslíme proces usporiadania prvkov kolekcie do určitého poradia. Existujú dva hlavné mechanizmy na to:

  1. Prirodzené zoradenie (Natural Ordering): Trieda implementuje rozhranie Comparable a definuje metódu compareTo(). Táto metóda porovnáva aktuálny objekt s iným rovnakého typu a vracia záporné celé číslo, nulu alebo kladné celé číslo, ak je aktuálny objekt "menší", "rovný" alebo "väčší" ako druhý objekt. Mnohé štandardné triedy, ako String, Integer, Double, už implementujú Comparable.

    // Príklad prirodzeného zoradenia pre reťazce
    String s1 = "apple";
    String s2 = "banana";
    int result = s1.compareTo(s2); // výsledok bude záporný
    
    Integer i1 = 10;
    Integer i2 = 5;
    int result2 = i1.compareTo(i2); // výsledok bude kladný
    
  2. Vlastné zoradenie (Custom Ordering): Vytvorí sa samostatná trieda, ktorá implementuje rozhranie Comparator a definuje metódu compare(T o1, T o2). Táto metóda porovnáva dva objekty a vracia záporné, nulu alebo kladné celé číslo, podobne ako compareTo(). Comparator sa používa, keď prirodzené zoradenie nie je vhodné alebo ak je potrebné viacero spôsobov zoradenia pre rovnaký typ.

    import java.util.Comparator;
    
    // Príklad vlastného zoradenia podľa dĺžky reťazca
    public class StringLengthComparator implements Comparator<String> {
        @Override
        public int compare(String s1, String s2) {
            return Integer.compare(s1.length(), s2.length());
        }
    }
    
    // Použitie komparátora
    // List<String> strings = Arrays.asList("orange", "apple", "grape");
    // Collections.sort(strings, new StringLengthComparator());
    // teraz bude zoznam ["apple", "grape", "orange"]
    

Tieto mechanizmy sa používajú v metódach zoradenia v triedach Arrays a Collections, ako aj v zoradených kolekciách, ako sú TreeSet a TreeMap.