Целых 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
This media is not supported in your browser
VIEW IN TELEGRAM
NZT существует.
В фильме «Области тьмы»
герой выпивает NZT — и за день
становится трейдером,
мастером кунг-фу и полиглотом.
Дело не в таблетке.
А в состоянии.
Химия не нужна.
Когда ум чист,
внимание собрано,
и сомнений нет —
ты уже на NZT.
Ты замечаешь всё.
Действуешь без разрывов.
И мир отвечает тебе.
Как включить режим NZT?
Подписывайся на Мэверика.
• входи в состояние
всё «получается само».
• мгновенно принимай
лучшие решения.
• считывай сложные связи
там, где все видят хаос.
• управляй фокусом
и вероятностями событий.
Твоя таблетка NZT.
👇
Мэверик.
Ясность. Точность.
ㅤ
В фильме «Области тьмы»
герой выпивает NZT — и за день
становится трейдером,
мастером кунг-фу и полиглотом.
Дело не в таблетке.
А в состоянии.
Химия не нужна.
Когда ум чист,
внимание собрано,
и сомнений нет —
ты уже на NZT.
Ты замечаешь всё.
Действуешь без разрывов.
И мир отвечает тебе.
Как включить режим NZT?
Подписывайся на Мэверика.
• входи в состояние
всё «получается само».
• мгновенно принимай
лучшие решения.
• считывай сложные связи
там, где все видят хаос.
• управляй фокусом
и вероятностями событий.
Твоя таблетка NZT.
👇
Мэверик.
Ясность. Точность.
ㅤ
💩14
public class Main {
static class Resource implements AutoCloseable {
private String name;
Resource(String name) { this.name = name; }
void use() throws Exception {
throw new Exception(name + " use exception");
}
@Override
public void close() throws Exception {
throw new Exception(name + " close exception");
}
}
public static void main(String[] args) {
try {
try (Resource r1 = new Resource("1");
Resource r2 = new Resource("2")) {
r1.use();
r2.use();
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤯2❤1😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣16
Arrays.parallelSort() — это метод из класса java.util.Arrays, который сортирует массивы с использованием параллельных алгоритмов, задействуя несколько ядер процессора для ускорения сортировки больших объемов данных.
– Значительно ускоряет сортировку больших массивов
– Автоматически использует ForkJoinPool для параллельной обработки
– Минимальные изменения кода по сравнению с обычной сортировкой
Пример кода:
import java.util.*;
import java.util.concurrent.TimeUnit;
public class ParallelSortExample {
public static void main(String[] args) {
// Создаем большой массив случайных чисел
int size = 10_000_000;
int[] numbers = new int[size];
Random random = new Random();
for (int i = 0; i < size; i++) {
numbers[i] = random.nextInt(1_000_000);
}
// Копируем массив для сравнения сортировок
int[] numbersCopy = numbers.clone();
System.out.println("Начата параллельная сортировка...");
long startTime = System.nanoTime();
Arrays.parallelSort(numbers);
long parallelTime = System.nanoTime() - startTime;
System.out.println("Параллельная сортировка заняла: " +
TimeUnit.NANOSECONDS.toMillis(parallelTime) + " мс");
System.out.println("Начата обычная сортировка...");
startTime = System.nanoTime();
Arrays.sort(numbersCopy);
long sequentialTime = System.nanoTime() - startTime;
System.out.println("Обычная сортировка заняла: " +
TimeUnit.NANOSECONDS.toMillis(sequentialTime) + " мс");
// Сортировка объектов
String[] cities = {"Москва", "Санкт-Петербург", "Казань",
"Екатеринбург", "Новосибирск", "Владивосток"};
Arrays.parallelSort(cities);
System.out.println("\nОтсортированные города: " + Arrays.toString(cities));
// Сортировка с компаратором
Arrays.parallelSort(cities, Comparator.comparingInt(String::length));
System.out.println("Города по длине названия: " + Arrays.toString(cities));
}
}
Особенности:
– Работает с массивами примитивов и объектами
– Автоматически выбирает алгоритм сортировки в зависимости от размера массива
– Для небольших массивов может использовать последовательную сортировку
– Поддерживает пользовательские компараторы для объектов
👀 Особенно полезен при обработке больших датасетов, сортировке больших логов и обработе данных в многопоточных приложениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
public class Main {
public static void main(String[] args) {
Thread t1 = new Thread(() -> {
Singleton s1 = Singleton.getInstance();
System.out.print("T1 ");
});
Thread t2 = new Thread(() -> {
Singleton s2 = Singleton.getInstance();
System.out.print("T2 ");
});
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("Done");
}
}Please open Telegram to view this post
VIEW IN TELEGRAM
DelayQueue — это потокобезопасная очередь из java.util.concurrent, где элементы становятся доступными только после истечения заданного времени задержки. Элементы должны реализовывать интерфейс Delayed.Она удобна для отложенной обработки задач — таймеров, кэшей с TTL, планировщиков.
• Элементы выдаются только после задержки
• Работает в многопоточном режиме
• Идеальна для задач с таймаутами
import java.util.concurrent.*;
class Task implements Delayed {
long start = System.currentTimeMillis() + 1000;
public long getDelay(TimeUnit u) { return u.convert(start - System.currentTimeMillis(), TimeUnit.MILLISECONDS); }
public int compareTo(Delayed o) { return Long.compare(getDelay(TimeUnit.MILLISECONDS), o.getDelay(TimeUnit.MILLISECONDS)); }
public String toString() { return "Задача выполнена"; }
}
public class Main {
public static void main(String[] args) throws Exception {
DelayQueue<Task> q = new DelayQueue<>();
q.put(new Task());
System.out.println(q.take()); // ждём 1 сек
}
}
👀 DelayQueue особенно полезна для отложенных задач, TTL-кэшей и планировщиков.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Самые хитрые и частые вопросы на собеседованиях
В статье рассказано про 10 самых «каверзных» вопросах на собеседованих, где достаточно часто допускают ошибки. Есть и те, что больше похожи на головоломки или касаются нюансов, которые прочувствовать без практики очень тяжело.
⛓ Читать статью
➡️ Easy Java | #Статья
В статье рассказано про 10 самых «каверзных» вопросах на собеседованих, где достаточно часто допускают ошибки. Есть и те, что больше похожи на головоломки или касаются нюансов, которые прочувствовать без практики очень тяжело.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2