itmo_conspects

Лекция 2

Сейчас версией с долгосрочной поддержкой является Java 21

Разберемся в изданиях Java:

Комитет Java Community Process определяет, как будут выглядеть будущие спецификации Java


Классы в Java как правило объединены в пакеты. По умолчанию, стандартная библиотека Java содержит пакеты java.lang, java.io, java.util и другие. Организация классов в пакеты позволяет избежать коллизии имен.

В Java все коллекции представлены в Java Collections Framework наследуются от интерфейса java.util.Collection. Сам интерфейс java.util.Collection наследуется от интерфейса java.util.Iterable, позволяющий итерироваться по коллекции.

В Java в качестве динамического списка используют ArrayList (с произвольным доступом по индексу) и LinkedList (с последовательный доступом)

Vector в Java работает так же, как и ArrayList, но Vector потокобезопасный. Также Vector расширяется вдвое, а ArrayList в 1,5 раза

Помимо них есть:

В java.util.concurrent существуют потокобезопасные версии коллекций

Помимо Java Collections Framework другие фреймворки, такие как Google Guava и Apache Commons Collections, реализуют свои коллекции

Чтобы обрабатывать коллекции, в Java есть Stream API. Работает он как LINQ в C#:

  1. Создаем поток из коллекции: list.stream()

  2. Применяем промежуточные методы, такие как filter(), map(), sorted()

  3. Применяем терминальный метод, например, count(), findFirst(), toList()

Пример:

list
    .stream()
    .filter(x -> x.toString().length() == 3)
    .forEach(System.out::println);

list.stream().forEach(x -> System.out.println(x));