Бесплатный курс по Java: от основ до продвинутого уровня
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 для глубокого копирования.