Тэги: Java, руководство, ООП.
В Java 21 наряду с SequencedCollection (см. SequencedCollection и SequencedSet в Java и SequencedMap в Java) из статуса preview в статус production-ready перешла ещё одна фича – шаблоны сравнения (pattern matching) для конструкции switch. Рассмотрим возможности этой конструкции на конкретных примерах.
Предположим, что мы пишем метод displayScale(), в котором надо определить количество знаков после запятой в переданном нам числе. Причём это число поступает на вход как самый базовый тип Object. Напомню, что базовым для всех чисел является класс Number. Его производными типами являются, например, целые числа Integer и числа с произвольной точностью BigDecimal.
Тэги: Java, Collections, ООП.
В статье SequencedCollection и SequencedSet в Java мы рассмотрели интерфейс SequencedCollection, который появился в Java 21. Также узнали про его более частный случай – интерфейс SequencedSet.
Теперь перейдём к интерфейсу SequencedMap, который обладает сходным функционалом, но не входит напрямую в иерархию SequencedCollection.
Тэги: Java, Collections, алгоритмы, ООП.
В Java 21 появилась новая группа интерфейсов коллекций, самым основным из которых является SequencedCollection. Он расширяет базовый интерфейс Collection, добавляя в него ряд полезных методов для манипуляций с первым и последним элементами, а также для инвертирования коллекции:
Две основных реализации интерфейса List (ArrayList и LinkedList) также поддерживают этот интерфейс.
Тэги: Kotlin, Java, Collections, Stream API.
В этой статье хотелось бы сделать шпаргалку для тех, кто только начинает осваивать Kotlin. Этот язык предлагает широкий набор методов для работы с коллекциями. Многие начинают осваивать его, уже имея за плечами опыт на Java, поэтому мне хотелось бы привести также варианты кода и на Java.
Для того, чтобы нам было от чего отталкиваться, создадим класс-сущность. Это класс, предназначенный для хранения данных. Часто в приложениях поля таких классов мапятся один к одному на поля таблицы в базе данных. Для примера рассмотрим сущность «Город», у которой есть два атрибута: название и количество проживающих в нём людей.
Тэги: Java, алгоритмы, головоломки.
Двусвязный список – это структура данных, которая состоит из узлов, каждый из которых имеет ссылки на следующий и предыдущий элементы. Одна из часто используемых операций на двусвязных списках – это инверсия списка, то есть изменение порядка элементов на обратный.
Класс Node, представляющий собой один элемент списка, выглядит следующим образом:
Тэги: Collections, Java, руководство, ООП.
В языке программирования Java есть механизм сравнения объектов, который основан на интерфейсе Comparable и методе compareTo(). Этот механизм позволяет определить порядок сортировки объектов и использовать их в коллекциях, которые требуют сравнения элементов.
Интерфейс Comparable определяет единственный метод compareTo(), который сравнивает текущий объект с переданным в аргументе.
Контракт метода compareTo() состоит из трех основных правил:
Тэги: Java, алгоритмы, головоломки.
Римская система счисления – это система обозначений чисел, которая использовалась в Древнем Риме и до сих пор применяется в некоторых областях, таких как теория чисел, история и геральдика. В этой системе числа записываются с помощью комбинации символов, известных как римские цифры. В этой статье мы рассмотрим алгоритм записи римских цифр и основные правила, которые следует знать при работе с ними.
Тэги: алгоритмы, Java, руководство, головоломки, maven.
Давайте разберёмся, как можно вычислять арифметические выражения. Предположим, на вход нам поступает строка текста, которая содержит корректное арифметическое выражение.
Это выражение состоит из пробелов, чисел, скобок и знаков, обозначающих основные математические действия (плюс, минус, умножить, разделить). Нам нужно разобрать это выражение на отдельные элементы, а затем вычислить результат с учётом приоритетов математических операций. Например, умножение и деление должно выполняться раньше, чем сложение и вычитание. А часть выражения, заключённая в скобки, имеет приоритет над другими частями.
Обработку такого выражения можно разделить на три основных этапа:
Разберём каждую из этих частей подробнее.
Тэги: алгоритмы, руководство, Java, головоломки.
В математике и программировании понятие системы счисления занимает очень важную роль. За столь умным названием кроется довольно простая идея. Система счисления – это способ записи (представления) чисел.
Иными словами, как записать любое сколь угодно большое число, имея в арсенале всего 10 цифр-символов? Правильно, комбинируя эти цифры друг с другом. Причём расположение цифры в записи числа имеет значение, ибо 123 не равно 321. Хотя цифры используются одинаковые.
В повседневной жизни мы используем десятичную систему счисления, хоть и не задумываемся над этим. Просто так исторически сложилось. Десятичной она называется потому что для записи любого числа используется ровно 10 цифр.
Обратите внимание, что любое число в десятичной записи можно разбить на слагаемые и степени числа 10. Например:
Однако помимо десятичной существуют другие системы счисления. И у каждой из них своя область применения.
Тэги: Spring, Spring Boot, Kotlin, gradle, YouTube, Java.
В этой статье вы узнаете, как отправлять email в Spring Boot. Также можно посмотреть исходники этого примера на github и видео на YouTube.
Для начала создадим новый gradle-проект. Проще всего это сделать с помощью Spring Initializr. Там выбираем параметры Java 17, язык – Kotlin, сборщик Gradle – Kotlin. В зависимости добавим Spring Web и Java Mail Sender. В итоге в проекте должно быть прописано:
Стартер spring-boot-starter-mail добавляет саму функциональность работы с email.
Kotlin, Java, Java 11, Java 8, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.