public class Quiz {
record Point(int x, int y) {}
public static void main(String[] args) {
Object obj = new Point(3, 4);
String result = switch (obj) {
case Point(int x, int y) when x == y -> "Equal";
case Point(int x, int y) -> "Sum: " + (x + y);
default -> "Unknown";
};
System.out.println(result);
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2
В статье вы узнаете, что это такое, и как этим пользоваться на реальных примерах и советах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣3👍1🔥1
Где и для чего используется модификатор abstract?
Пример
import java.util.Random;
public class RandomExample {
public static void main(String[] args) {
// 1. Math.random() - простой случайный double
double randomDouble = Math.random();
System.out.println("Math.random: " + randomDouble);
// 2. Random класс с seed для воспроизводимости
Random random = new Random(42);
// Разные типы данных
int randomInt = random.nextInt(100); // 0-99
double randomDbl = random.nextDouble();
boolean randomBool = random.nextBoolean();
System.out.println("Random int: " + randomInt);
System.out.println("Random double: " + randomDbl);
System.out.println("Random boolean: " + randomBool);
// 3. ThreadLocalRandom для многопоточности
java.util.concurrent.ThreadLocalRandom.current()
.ints(3, 1, 10)
.forEach(n -> System.out.println("Stream random: " + n));
}
}
Ответ
Math.random() возвращает double в диапазоне [0.0, 1.0) и использует единственный статический Random объект под капотом, что может вызывать конкуренцию в многопоточности. Класс Random позволяет:
– Генерировать разные типы данных (int, long, float)
– Работать с несколькими seed'ами
– Создавать изолированные экземпляры для потоков
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔8🤡5💩2🤮1
public class Quiz {
public static void main(String[] args) {
String s1 = "hello";
String s2 = new String("hello");
String s3 = s2.intern();
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s2 == s3);
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Что выведет код?
Anonymous Quiz
21%
true, true, false
27%
false, true, false
36%
false, false, true
16%
true, false, true
🤔15
Что такое Spring Boot? — Spring Boot упрощает создание мощных приложений, добавляя несколько зависимостей и выполняя минимальную настройку.
Всего несколько строк кода позволяют настроить конечные точки HTTP, подключиться к базе данных и обрабатывать события.
Please open Telegram to view this post
VIEW IN TELEGRAM
Stream.map() — это промежуточная операция в Java Stream API, которая преобразует каждый элемент потока, применяя к нему заданную функцию. Результатом является новый поток с преобразованными элементами.
Преимущества:
– Упрощает преобразование данных без циклов
– Работает в цепочке операций Stream
– Поддерживает параллельное выполнение
import java.util.*;
public class StreamMapExample {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "cherry");
List<String> upperCaseFruits = fruits.stream()
.map(String::toUpperCase) // Преобразуем в верхний регистр
.toList();
System.out.println(upperCaseFruits); // [APPLE, BANANA, CHERRY]
// Преобразование строк в их длины
List<Integer> lengths = fruits.stream()
.map(String::length)
.toList();
System.out.println(lengths); // [5, 6, 6]
}
}
👀 Stream.map() особенно полезен для преобразования данных между форматами, извлечения конкретных полей из объектов и работы с числовыми преобразованиями.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤔1
Целых 14 страниц статей, теории и фишек. Везде есть подробное объяснение на русском языке вместе с примерами кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🤡1
Collectors.groupingBy() — это коллектор из Java Stream API, который группирует элементы потока по заданному критерию, возвращая Map, где ключ — критерий группировки, а значение — список элементов.
Преимущества:
– Упрощает группировку данных без ручного создания Map
– Поддерживает сложные критерии группировки
– Может комбинироваться с другими коллекторами
import java.util.*;
import java.util.stream.*;
public class GroupingByExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "apricot", "berry", "avocado");
// Группировка по первой букве
Map<Character, List<String>> groupedByFirstLetter = words.stream()
.collect(Collectors.groupingBy(word -> word.charAt(0)));
System.out.println(groupedByFirstLetter);
// {a=[apple, apricot, avocado], b=[banana, berry]}
// Группировка по длине слова
Map<Integer, List<String>> groupedByLength = words.stream()
.collect(Collectors.groupingBy(String::length));
System.out.println(groupedByLength);
// {5=[apple, berry], 6=[banana], 7=[apricot, avocado]}
}
}
Особенности:
– Возвращает Map<K, List<T>>
– Может использовать метод-ссылки, лямбды или сложные предикаты
– Поддерживает каскадную группировку
👀 Особенно полезен в анализе и категоризации данных, построении отчетов и статистики, группировке объектов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1🤔1
public class Main {
public static void main(String[] args) {
Test test = new Test();
test.process(10);
test.process(10.0);
}
}
class Test {
void process(int i) {
System.out.print("A");
}
void process(double d) {
System.out.print("B");
}
void process(Integer i) {
System.out.print("C");
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
🤡9❤2
🤔31🤡16😁1
Многие с этого канала как-либо работают с Java, но все ли осознают, насколько много у Java возможностей? В этой статье вы узнаете о всех масштабах и возможностях данного языка.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🤣1
String.join() — это статический метод класса String, который объединяет несколько строк в одну с использованием указанного разделителя.
Преимущества:
— Простой и читаемый способ конкатенации строк
— Избегает ручного управления разделителями
— Поддерживает коллекции и массивы
import java.util.*;
public class StringJoinExample {
public static void main(String[] args) {
// Объединение массива строк
String[] colors = {"красный", "зеленый", "синий"};
String result1 = String.join(" | ", colors);
System.out.println(result1); // красный | зеленый | синий
// Объединение коллекции
List<String> cities = Arrays.asList("Москва", "Санкт-Петербург", "Казань");
String result2 = String.join(", ", cities);
System.out.println(result2); // Москва, Санкт-Петербург, Казань
// Динамическое формирование пути
String path = String.join("/", "home", "user", "documents", "file.txt");
System.out.println(path); // home/user/documents/file.txt
// Объединение без разделителя
String words = String.join("", "Hello", "World");
System.out.println(words); // HelloWorld
}
}
Особенности:
— Не изменяет исходные строки
— Возвращает новую строку
— Принимает CharSequence (String, StringBuilder и т.д.)
👀 Особенно полезен в формировании CSV строк из коллекций, создании путей файловой системы и генерация SQL-запросов с IN условиями.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🤡1
class Parent {
static void print() {
System.out.print("Parent ");
}
void show() {
System.out.print("ParentShow ");
}
}
class Child extends Parent {
static void print() {
System.out.print("Child ");
}
@Override
void show() {
System.out.print("ChildShow ");
}
}
public class Main {
public static void main(String[] args) {
Parent obj = new Child();
obj.print();
obj.show();
Child child = new Child();
child.print();
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код?
Anonymous Quiz
30%
Parent ChildShow Child
39%
Child ChildShow Child
12%
Parent ParentShow Parent
19%
Ошибка компиляции
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣10👍5😁1
Files.walk() — это метод из Java NIO (пакет java.nio.file), который рекурсивно обходит файловое дерево, начиная с указанной директории, и возвращает Stream с путями ко всем найденным файлам и папкам.
Преимущества:
– Простой рекурсивный обход файловой системы
– Автоматическое управление ресурсами
– Поддержка параллельной обработки
– Фильтрация и преобразование прямо в потоке
import java.nio.file.*;
import java.io.IOException;
import java.util.stream.Stream;
public class FilesWalkExample {
public static void main(String[] args) {
Path startDir = Paths.get(".");
try (Stream<Path> paths = Files.walk(startDir, 3)) {
// Найти все .java файлы до глубины 3
paths.filter(Files::isRegularFile)
.filter(p -> p.toString().endsWith(".java"))
.forEach(p -> System.out.println("Java файл: " + p));
} catch (IOException e) {
System.err.println("Ошибка обхода: " + e.getMessage());
}
// Подсчет общего размера файлов
try (Stream<Path> allPaths = Files.walk(startDir)) {
long totalSize = allPaths.filter(Files::isRegularFile)
.mapToLong(p -> {
try {
return Files.size(p);
} catch (IOException e) {
return 0;
}
})
.sum();
System.out.println("Общий размер: " + totalSize + " байт");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Особенности:
– Возвращает Stream<Path> для ленивой обработки
– Принимает параметр глубины поиска (максимальный уровень вложенности)
– Автоматически закрывает ресурсы при использовании try-with-resources
– Может выбрасывать IOException
👀 Особенно полезен при рекурсии файлов, вычислении статистики по директории, при сборе метаданных о файлах и т.п.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤1
Самые хитрые и частые вопросы на собеседованиях
В статье рассказано про 10 самых «каверзных» вопросах на собеседованих, где достаточно часто допускают ошибки. Есть и те, что больше похожи на головоломки или касаются нюансов, которые прочувствовать без практики очень тяжело.
⛓ Читать статью
➡️ Easy Java | #Статья
В статье рассказано про 10 самых «каверзных» вопросах на собеседованих, где достаточно часто допускают ошибки. Есть и те, что больше похожи на головоломки или касаются нюансов, которые прочувствовать без практики очень тяжело.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2