Java Stream API

Streamдля работы с коллекциями.

Избавляет от необходимости вручную реализовывать операции над коллекциями.

Проще говоря пишем запрос к коллекции как к базе данных без ничего лишнего.

То есть например мы можем запросить из коллекции только четные числа простым запросом в формате цепочки соответствующих функций класса Stream.

Также позволяет производить операции над элементами коллекции в параллельных потоках.

Пример программы:

import java.util.*; import static java.util.stream.Collectors.toList; class SStream{ public static void main(String[] args) { List< Integer > numbers = Arrays.asList(3,2,2,3,7,3,5); // map нужен для преобразования элементов по какому-то правилу. Например // с помощью map умножаем каждый элемент коллекции сам на себя. // То есть i здесь это элемент коллекции и stream ниже проходит по каждому // элементу коллекции и совершает с ним операцию, заданную нами с помощью // лямбда-выражения. В нашем случае — умножение элемента i самого на себя. // В collect передаем метод, который будет преобразовывать в необходимую // коллекцию результат запроса. В нашем случае результирующая коллекция // будет List, так как метод toList(). // В итоге выводимая на консоль коллекция List будет содержать числа, // которые являются результатом лямбда-выражения. System.out.println(numbers.stream().map(i -> i*i).collect(toList())); // filter — фильтрует элементы в соответствии с условием. // Здесь запрашиваем только четные числа коллекции. System.out.println(numbers.stream().filter(i -> i%2 == 0).collect(toList())); // limit — оставляет только указанное количество элементов коллекции. System.out.println(numbers.stream().limit(4).collect(toList())); // forEach — применяем какое-то действие к каждому элементу. numbers.stream().forEach(System.out::println); // sorted — сортирует элементы. Также может принимать аргументом лямбда- // выражение, по которому сортирует. System.out.println(numbers.stream().sorted().collect(toList())); // parallel — для распараллеливания выполнения операций с элементами коллекции. // То есть благодаря добавлению parallel к коллекции лямбда-выражение может // выполняться намного быстрее — и насколько быстро, зависит от количества ядер // в компьютере. System.out.println(numbers.stream().parallel().map(i -> i*i).collect(toList())); } }

Вывод:

Работа с элементами файловой системы с помощью класса File

Узнайте, как использовать класс File в Java для работы с файловой системой: получение пути, имени, проверка директорий и другие методы. Примеры кода.
Time to read: 10

Object. Метод toString и его переопределение

Поймите важность метода toString в Java и научитесь его правильно переопределять для вывода полезной информации об объекте. Примеры реализации.
Time to read: 15

Метод Clone и его переопределение

Разберитесь с методом clone в Java: как клонировать объекты, включая ссылочные поля. Практические примеры переопределения clone для глубокого копирования.
Time to read: 14