Какие основные источники данных и API вы знаете в Java?

Ответ

В Java существует богатый набор стандартных API для работы с различными источниками данных.

Ключевые источники и API:

  1. Коллекции (Collections Framework): Базовые структуры данных.

    • List (ArrayList, LinkedList)
    • Set (HashSet, TreeSet)
    • Map (HashMap, TreeMap)
  2. Ввод-Вывод (I/O & NIO.2): Для работы с потоками и файлами.

    • Классы InputStream/OutputStream, Reader/Writer.
    • Современный API java.nio.file (Files, Paths, Path).
  3. Базы данных (JDBC): Стандартный интерфейс для работы с СУБД.

    • Connection, Statement, PreparedStatement, ResultSet.
  4. Потоки данных (Stream API): Для декларативной обработки коллекций.

    • Stream<T>, операции map, filter, reduce, collect.
  5. Сеть (Networking): Для сетевых операций.

    • Socket, ServerSocket.
    • URL и HttpURLConnection для HTTP-запросов.

Пример чтения файла с помощью NIO.2:

import java.nio.file.*;
import java.util.List;

Path path = Paths.get("data.txt");
List<String> lines = Files.readAllLines(path); // Чтение всех строк
lines.forEach(System.out::println);

Пример использования JDBC (с try-with-resources):

try (Connection conn = DriverManager.getConnection(dbUrl, user, password);
     PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE active = ?")) {
    stmt.setBoolean(1, true);
    ResultSet rs = stmt.executeQuery();
    while (rs.next()) {
        System.out.println(rs.getString("username"));
    }
} catch (SQLException e) {
    e.printStackTrace();
}

Ответ 18+ 🔞

А, слушай, ну вот, блядь, в Java же есть целый овердохуища стандартных штук, чтобы с данными работать. Не надо самому велосипед из говна и палок собирать, всё уже придумали до нас, эти, блядь, умные дядьки в очках.

Ну, смотри, куда обычно лезем за данными:

  1. Коллекции (Collections Framework): Это как твоя первая пачка сигарет в школе — база, без неё нихуя.

    • List (ArrayList, LinkedList) — чтоб просто складывать по порядку.
    • Set (HashSet, TreeSet) — чтоб складывать, но без повторов, ёпта.
    • Map (HashMap, TreeMap) — чтоб по ключу искать, как в телефонной книжке, только цифровой.
  2. Ввод-Вывод (I/O & NIO.2): Чтоб с файлами и потоками не ебаться как лось с асфальтом.

    • Старые деды InputStream/OutputStream, Reader/Writer. Работают, но иногда тормознут.
    • А вот новый шикарный API java.nio.file (Files, Paths, Path) — это уже красота, блядь. Удобно, как в тапочках.
  3. Базы данных (JDBC): Ну, это классика жанра. Хочешь с PostgreSQL, MySQL или хоть с Excel через драйвер — всё через него.

    • Connection, Statement, PreparedStatement, ResultSet. Выучи как «Отче наш», и будет тебе счастье.
  4. Потоки данных (Stream API): Вот это, блядь, магия! Коллекции обрабатывать — одно удовольствие. Вместо циклов — красота.

    • Stream<T>, и понеслась: map, filter, reduce, collect. Чистая декларативщина, в рот меня чих-пых!
  5. Сеть (Networking): Хочешь с сервером пообщаться или свой сервак поднять — пожалуйста.

    • Socket, ServerSocket — для своих низкоуровневых шалостей.
    • URL и HttpURLConnection — чтобы по HTTP что-то стянуть, хотя сейчас уже есть и помощнее инструменты.

Вот, смотри, как файл прочитать по-новому, красиво (NIO.2):

import java.nio.file.*;
import java.util.List;

Path path = Paths.get("data.txt");
List<String> lines = Files.readAllLines(path); // Считал всё разом, и нет проблем
lines.forEach(System.out::println);

А вот, блядь, как с базой через JDBC работать, чтобы ресурсы сами закрывались (try-with-resources):

try (Connection conn = DriverManager.getConnection(dbUrl, user, password);
     PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE active = ?")) {
    stmt.setBoolean(1, true);
    ResultSet rs = stmt.executeQuery();
    while (rs.next()) {
        System.out.println(rs.getString("username"));
    }
} catch (SQLException e) {
    e.printStackTrace(); // Ну, на крайняк, если всё пошло по пизде
}

Вот и вся наука, блядь. Главное — не путать, где List, а где ResultSet, а то потом сидишь и думаешь: «Чё за хуйня, почему не работает?». А потому что, чувак, в Map метод get() есть, а в ResultSetgetString(). Всё просто, как три копейки.