Sobes.tech
Junior

Aké spôsoby spracovania dát existujú v Jave?

sobes.tech AI

Odpoveď od AI

  1. Iterácia:

    • Cyklus for, while, do-while.
    • Iterátory (Iterator, ListIterator).
    • Rozšírený for cyklus (foreach).
    List<String> data = new ArrayList<>();
    data.add("item1");
    data.add("item2");
    
    for (String item : data) {
        System.out.println(item); // Spracovanie každého prvku
    }
    
  2. Prúdy (Streams):

    • API pre deklaratívne spracovanie kolekcií.
    • Operácie vysokého stupňa: filter, map, reduce, collect.
    • Podporujú paralelné spracovanie.
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    
    List<Integer> evenNumbers = numbers.stream()
                                       .filter(n -> n % 2 == 0) // Filtrácia párnych
                                       .collect(Collectors.toList()); // Zhromažďovanie do zoznamu
    
  3. Paralelné prúdy (Parallel Streams):

    • Rozšírenie prúdov pre automatické paralelizovanie.
    • Jednoduché použitie: .parallelStream().
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
    
    int sum = numbers.parallelStream()
                     .mapToInt(Integer::intValue)
                     .sum(); // Paralelné sčítanie
    
  4. RxJava / Reactor (Reaktívne programovanie):

    • Asynchrónne spracovanie tokov dát pomocou reaktívneho programovania.
    • Používa pozorovateľov (Observable, Flux) a operátory (map, filter, merge).
    // Príklad s RxJava
    Observable<String> source = Observable.just("Alpha", "Beta", "Gamma");
    
    source.subscribe(s -> System.out.println("Prijaté: " + s)); // Spracovanie každého prvku asynchrónne
    
  5. Apache Spark / Hadoop MapReduce:

    • rámce pre distribuovanú spracovanie veľkých dát.

    • Vhodné pre ETL procesy, analytiku a spracovanie dát v klastre.

    • (Príklad kódu pre Spark/Hadoop je príliš rozsiahly na krátku odpoveď, ale podstata je v distribuovaných výpočtoch).

  6. Dátové štruktúry v Jave:

    • Použitie vhodných štruktúr (Arrays, Lists, Sets, Maps) pre efektívne ukladanie a prístup.
    • Napríklad, HashMap pre rýchle vyhľadávanie podľa kľúča, HashSet pre unikátne prvky.
    Map<String, Integer> ages = new HashMap<>();
    ages.put("Alice", 30);
    ages.put("Bob", 25);
    
    System.out.println(ages.get("Alice")); // Rýchly prístup k údajom podľa kľúča
    
  7. Databázy (JDBC / ORM):

    • Spracovanie dát nachádzajúcich sa v externých databázach.
    • JDBC pre priame interakcie s SQL.
    • ORM (Hibernate, JPA) pre objektovo-relačné mapovanie.
    // Príklad JDBC
    try (Connection conn = DriverManager.getConnection(url, user, password);
         Statement stmt = conn.createStatement();
         ResultSet rs = stmt.executeQuery("SELECT name, age FROM users")) {
    
        while (rs.next()) {
            String name = rs.getString("name");
            int age = rs.getInt("age");
            System.out.println("Používateľ: " + name + ", Vek: " + age); // Spracovanie dát z DB
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    

Výber spôsobu závisí od objemu dát, požiadaviek na výkon, paralelizmu a zložitosti logiky spracovania.