Java с нуля до middle
153 subscribers
56 photos
14 links
Download Telegram
Что такое полиморфизм?

Я всегда говорю : " Один интерфейс множество реализаций"

На практике это:
- Создаем интерфейс Movable
- Создаем класс Animal и реализовываем интерфейс
- Создаем два класса Cat и Bird и наследуемся от класса Animal, переопределяем в них метод move
- В main создаем обьекты классов Cat и Bird, но ссылку указываем на наш интерфейс. Эту возможность нам предоставляет полиморфизм.
- Далее вызываем полиморфный метод move у интерфейса , который связан через наследование с нашими классами.
👍2
Records in java

В java 16 добавили records.
Records представляют классы, которые предназначены для создания неизменяемых классов данных.

На картинке создал record BirdOne, автоматически создается поле name (final), конструктор, геттер и переопределены методы equals(), hashCode() и toString().

lombok теперь можно не использовать!
Зачем нужен Optional?

Optional контейнер для того, что бы избежать NullPointerException - это исключение, которое возникает в Java, когда программа пытается выполнить операцию с null ссылкой в качестве объекта.

Заварачиваем List c помощью статического метода ofNullable(), который принимает значение в качестве аргумента и возвращает Optional, содержащий это значение, если оно не равно null, или же пустой Optional, если значение равно null.

Затем мы можем использовать метод isEmpty для проверки, содержит ли Optional null. Если isEmpty() возвращает false, то мы можем вызвать метод get() для получения содержимого Optional.

Короче, если есть риск того, что будет npe, заварачивайте обьект в optional
Задача с leetcode

Дана строка s, состоящая из слов и пробелов. Вернуть длину последнего слова в строке.

Решение в комментах
Можно ли переопределить статический метод?
Anonymous Quiz
40%
Можно
46%
Нет
Заполнить пустое место в методе action() так,
чтобы был корректно вызван метод
Anonymous Quiz
58%
super
14%
this
8%
One
20%
new One()
Задача реализовать интерфейс

Используйте мапу
https://codeshare.io/MN1x1Q

Я напишу свою завтра
Кто нибудь попробывал реализовать интерфейс?
Anonymous Poll
22%
Да
36%
Нет
53%
Новый год завтра!
Вот реализация
https://codeshare.io/eVRnWJ

Пишите, тесты, я свои напишу позже
https://codeshare.io/WdqD9E

Написал пару тестов, остальные сами пишите, если не выйдет пишите в коменты помогу.

Это совершенно типичное задание для джуна на работе, реализация интерфейса, тесты.
С Новым годом!!! 🎄
Желаю вам в новом году доучить джаву и найти работу.
Всем мир! ✌️
👍154
Функциональный интерфейс

Появился в java 8, содержит один единственный абстрактный метод.

Дан интерфейс, дана лямбда.
Задание переписать лямбду в анонимный класс, решение в комментах.
Predicate

Интерфейс который предоставляет boolean метод test(). В основном используется для фильтрации данных из потока. Можно еще всякие проверки писать, типа есть соединения с бд, отправляет ли в кафку. Ну и запускать шедулер когда тру.

На картинке написал предикат, который проверяет содержится ли в стринге буква "c". Метод тест возвращает true, если элемент есть.

Задание:
Дан массив стрингов написать цепочку предикатов на поиск элементов содержащих "a", "c".
Решение в комментах
👍2
Function

Интерфейс принимает объект одного типа и возвращает другого.

На картинке мы считаем количество символов в стринг.
apply() как раз тот метод куда мы пихаем стринг и ожидаем что он нам выведет Integer, т.к в function мы определили s.length()

Задание:
Посчитать количество символов у массива стрингов, через stream.
Решение в комментах
Consumer

Интерфейс принимает объект и выполняет над ним операцию

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

Задача:
К массиву интов прибавить двойку и вывести это на экран. Сделать это через stream.
Решение сами знаете где)
Supplier

Интерфейс в Java, который представляет функцию, которая не принимает никаких аргументов и возвращает результат. Имеет один единственный абстрактным метод get().

На картинке мы создаем массив интов и потом записываем его с помощью get.

Задание:

Создать стрим интов, сгенерировать в нем 100 рандомных чисел, далее вывести 20 из них в консоль.
Решение в комментах
Comparator

Интерфейс, который принимает в метод int compare(o1, o2) два значения и возвращает целое число, знак которого определяет правило сортировки. Возвращает 1, -1, 0

На картинке определим сравнения строк в обратном порядке, то есть если строка больше, то она будет выше. Если переставить местами a и b, будет обычная сортировка.

Задача:

String[] str = {"apple" ,"nike", "oppo", "lenovo", "puma", "mercedes"};

Создать стрим из этого массива, отcортировать по возрастанию символов в слове, если символов одинаковое количество, сортировать по алфавиту.
Решение в комментах
Задача с собеса

Даны три отсортированных массива, одинаковой длины. Найти и вывести одинаковые элементы

Решение в комментах
🔥4
Задача

Даны целые числа N и K, и последовательность из N целых чисел. Циклически сдвинуть все элементы последовательности на K элементов вправо.

Кто может решить?)
Многопоточка

Что делает этот код?
1. Создаем переменную counter, которую будем увеличивать
2. Создаем метод increment, в котором увеличиваем переменную на 1
3. Создаем класс R, который имплементирует Runnable и переопределяем метод run.
4. в методе run вызываем increment() 1000 раз
5.Создаем в main два потока и пихаем туда наш класс. Стартуем потоки через start() и просим их дождаться главного потока main, через join()
6. Выводим результат