tgindex

Java | Фишки и трюки

описание

Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg

6 832
подписчиков
Охват к подписчикам
18,8%
ERR
Реакции к просмотрам
0,57%
516 на 50 постов
Пересылки к просмотрам
0,93%
850
Постов в день
0,1
всего 91

Где отзываются чаще

доля реакций к просмотрам
  • 15:52⌨️ "Фабричный метод" (Factory Method). Этот паттерн позволяет создавать объекты без указания конкретных классов объектов. Вместо прямого создания объекта класса, создание объекта делегируется методу (фабричному методу), который может быть переопределен подклассом, чтобы изменить тип создаваемого объекта. Пример реализации: 1️⃣Создадим интерфейс продукта, который будет производиться фабричным методом. interface Product { void use(); } 2️⃣Создадим реализации продуктов. class ConcreteProductA implements Product { @Override public void use() { System.out.println("Using ConcreteProductA"); } } class ConcreteProductB implements Product { @Override public void use() { System.out.println("Using ConcreteProductB"); } } 3️⃣Создадим абстрактный класс с фабричным методом. abstract class Creator { public abstract Product factoryMethod(); public void anOperation() { Product product = factoryMethod(); product.use(); } } 4️⃣Реализуем конкретные создатели для каждого типа продукта. class ConcreteCreatorA extends Creator { @Override public Product factoryMethod() { return new ConcreteProductA(); } } class ConcreteCreatorB extends Creator { @Override public Product factoryMethod() { return new ConcreteProductB(); } } 5️⃣Демонстрация использования. public class FactoryMethodDemo { public static void main(String[] args) { Creator creatorA = new ConcreteCreatorA(); creatorA.anOperation(); // Использует ConcreteProductA Creator creatorB = new ConcreteCreatorB(); creatorB.anOperation(); // Использует ConcreteProductB } } В этом примере FactoryMethodDemo класс демонстрирует использование фабричного метода. Creator класс содержит фабричный метод factoryMethod(), который переопределяется в подклассах ConcreteCreatorA и ConcreteCreatorB для создания конкретных продуктов ConcreteProductA и ConcreteProductB соответственно.1,87%
  • 27 окт.без подписи1,37%
  • 20 июн. 2025 г.без подписи0,98%
  • 6 июл.⌨️ Что такое перечисления (enum)? Перечисления представляют набор логически связанных констант. Нужны для ограничения области допустимых значений: например, времена года, дни недели. Перечисление фактически представляет новый класс, поэтому мы можем определить переменную данного типа и использовать ее. Перечисления, как и обычные классы, могут определять конструкторы, поля и методы. Следует отметить, что конструктор по умолчанию приватный. Преимуществом Еnum перед обычными константами является возможность проверки типа данных. К недостаткам относится невозможность применения операторов >, <, >=, <=, а так же большее потребление памяти по сравнению с обычными константами. Встроенные методы: - ordinal() возвращает порядковый номер определенной константы (нумерация начинается с 0) - values() возвращает массив всех констант перечисления public enum Day { MONDAY("понедельник"), TUESDAY("вторник"), WEDNESDAY("среда"), THURSDAY("четверг"), FRIDAY("пятница"), SATURDAY("суббота"), SUNDAY("воскресенье"); Day(String value) { this.value = value; } String value; public String getValue() { return value; } } public class EnumClass { public static void main(String[] args) { System.out.println(message(Day.FRIDAY)); } public static String message(Day day) { return "Это " + day.getValue(); // Это пятница } }0,89%
  • 19 янв. 2025 г.без подписи0,89%
  • 4 апр.⌨️ Какими значениями инициализируются переменные по умолчанию? byte — (byte)0; short — (short)0; int — 0; long — 0L; float — 0f; double — 0d; char — \u0000; boolean — false; Объекты (в том числе String) — null. #java #initialization0,87%
  • 3 июл.⌨️ Как ^, | и & работают с целочисленными операндами Пример: int a = 3 & 5; int b = 3 | 5; int c = 3 ^ 5; System.out.println(a); // 1 System.out.println(b); // 7 System.out.println(c); // 6 Чтобы думать как Java, нужно: ✅ Перевести значения обоих операндов в двоичную систему счисления. ✅ Расположить результаты перевода друг под другом. ✅ Сравнять в них число разрядов (дополнить лидирующими нулями). ✅ Применить к битам из каждого столбца оператор (&, | или ^). ✅ Записать результат каждой операции ниже в том же столбце. ✅ Перевести итог в десятичную форму. Потренеруемся на примере 3 & 5: Число 3 в двоичной системе счисления имеет вид 11, а число 5 — 101. Так как у числа 5 три разряда в двоичной системе, а у числа 3 — всего два, добавим лидирующий ноль к числу 3 в двоичной системе и получим 011. Берём цифры из обоих чисел и применяем к ним попарно оператор & (AND): 011 &&& 101 === 001 Получаем число 001. В десятичной записи ему соответствует число 1. Поэтому операция 3 & 5 и возвращает в результате 1.0,81%
  • 2 июл.⌨️ Полезные стримы. Группировка Дан список людей с именем и городом проживания. Нужно сгруппировать их по городам. import java.util.List; import java.util.Map; import java.util.stream.Collectors; record Person(String name, String city) {} public class StreamExample { public static void main(String[] args) { List<Person> people = List.of( new Person("Alice", "New York"), new Person("Bob", "Los Angeles"), new Person("Charlie", "New York"), new Person("David", "Los Angeles"), new Person("Edward", "San Francisco") ); Map<String, List<Person>> peopleByCity = people.stream() .collect(Collectors.groupingBy(Person::city)); peopleByCity.forEach((city, peopleInCity) -> { System.out.println(city + ": " + peopleInCity.stream() .map(Person::name) .collect(Collectors.joining(", "))); }); // Вывод: // San Francisco: Edward // New York: Alice, Charlie // Los Angeles: Bob, David } } #java #stream #grouping0,79%
  • 23 янв. 2025 г.без подписи0,75%
  • 3 мар.без подписи0,73%
  • 20 янв. 2025 г.без подписи0,73%
  • 30 маябез подписи0,68%