Java for Beginner
870 subscribers
1.01K photos
275 videos
14 files
1.68K links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Что выведет код?

import java.io.*;

public class Task250626 {
public static void main(String[] args) throws IOException {
File file = new File("test.txt");
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
bw.write(65);
}
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
System.out.println(br.readLine());
}
file.delete();
}
}


#Tasks
👍2
Варианты ответа:
Anonymous Quiz
45%
65
27%
A
18%
Пустая строка
9%
null
👍3
Что такое record (Record-классы)? 🤓

Ответ:

Records
(Java 14 preview, финал в Java 16) — это неизменяемые (immutable) классы-носители данных.

Объявляются как record Point(int x, int y) {}.

Компилятор автоматически генерирует: конструктор, геттеры (с теми же именами), equals(), hashCode(), toString().

Можно добавить компактный конструктор для валидации. Records не могут наследоваться, но могут реализовывать интерфейсы.

Идеальны для DTO, value objects, кортежей. Упрощают создание классов-данных, уменьшая шаблонный код.



#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
[Совет по Java #054]

Тема: Collectors.groupingBy сохраняет порядок, если передать LinkedHashMap::new в качестве supplier.

Проблема: Метод Collectors.groupingBy(Function classifier) по умолчанию использует HashMap для накопления результатов, который не гарантирует никакого порядка ключей.

При обработке упорядоченных стримов (например, из List с определенной последовательностью) порядок ключей в результирующей Map может быть произвольным, что нарушает ожидания разработчика и может привести к непредсказуемому поведению при последующей итерации. Это особенно критично, если порядок группировки важен для бизнес-логики (например, группировка по датам в хронологическом порядке). Даже если стрим упорядочен, HashMap не сохраняет этот порядок, так как его структура основана на хэш-кодах.

Решение: Используйте перегруженную версию Collectors.groupingBy(classifier, supplier, downstream), передавая LinkedHashMap::new в качестве supplier. 

LinkedHashMap
 сохраняет порядок вставки ключей, а порядок вставки при группировке соответствует порядку, в котором ключи впервые встречаются в стриме (для упорядоченных стримов). Если нужен другой порядок (например, сортировка по ключу), используйте TreeMap::new и groupingBy с сортировкой.
import java.util.*;
import java.util.stream.*;

public class GroupingByOrder {

public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "apple", "cherry", "banana");

//По умолчанию: HashMap — порядок не гарантирован
Map<String, Long> defaultMap = words.stream()
.collect(Collectors.groupingBy(
s -> s,
Collectors.counting()
));
System.out.println("Default (HashMap): " + defaultMap);
// Может вывести {banana=2, cherry=1, apple=2} (порядок зависит от хэшей)

//Сохранение порядка вставки (LinkedHashMap)
Map<String, Long> orderedMap = words.stream()
.collect(Collectors.groupingBy(
s -> s,
LinkedHashMap::new, // supplier для сохранения порядка
Collectors.counting()
));
System.out.println("Ordered (LinkedHashMap): " + orderedMap);
// Порядок: apple (первое вхождение), banana, cherry

//Для сортировки по ключу используем TreeMap
Map<String, Long> sortedMap = words.stream()
.collect(Collectors.groupingBy(
s -> s,
TreeMap::new,
Collectors.counting()
));
System.out.println("Sorted by key: " + sortedMap); // apple, banana, cherry

// Для группировки с downstream коллектором, сохраняющим порядок элементов
Map<String, List<String>> groupedList = words.stream()
.collect(Collectors.groupingBy(
s -> s,
LinkedHashMap::new,
Collectors.toList() // сохраняет порядок элементов внутри группы
));
System.out.println("Grouped with list order: " + groupedList);
// {apple=[apple, apple], banana=[banana, banana], cherry=[cherry]}
}
}


Объяснение:
 Collectors.groupingBy имеет три перегрузки: первая использует HashMap и ArrayList как downstream; вторая позволяет задать конкретную фабрику для результирующей Map; третья также позволяет задать downstream-коллектор.

Передавая LinkedHashMap::new, мы явно указываем, что карта должна сохранять порядок вставки. Порядок вставки определяется порядком появления ключей в стриме. Для упорядоченных стримов (полученных из ListSortedSet или после sorted()) это дает предсказуемый результат. Для параллельных стримов сохранение порядка не гарантируется, даже с LinkedHashMap, потому что порядок обработки недетерминирован. Также важно, что LinkedHashMap немного дороже по памяти, чем HashMap, но эта цена оправдана, когда порядок важен.

#Java #советы
👍3
Что выведет код?

import java.util.*;
import java.util.stream.*;

public class Task260626 {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5);
Map<Integer, List<Integer>> map = numbers.stream()
.collect(Collectors.groupingBy(
n -> n % 2,
LinkedHashMap::new,
Collectors.toList()
));
System.out.println(map.keySet());
}
}


#Tasks
👍2
Варианты ответа:
Anonymous Quiz
50%
[1, 0]
25%
[0, 1]
0%
[0]
25%
[1]
👍3
Что такое pattern matching для instanceof? 🤓

Ответ:

Начиная с Java 16, instanceof может объявлять переменную одновременно с проверкой: if (obj instanceof String s) { ... }.

Если объект является экземпляром String, переменная s инициализируется автоматически, и её можно использовать в блоке.

Это сокращает код и устраняет необходимость явного приведения.

В Java 17+ pattern matching расширен на switch. Упрощает работу с полиморфными структурами, делая код более безопасным (переменная недоступна вне области).



#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Буду дальше немного красот публиковать, если вы не против 🤟

р. Мундыбаш
🔥91
«Голова Кита» село Турочак, Республика Алтай
🔥12🆒3
История технологии сегодня — 27 июня

ℹ️ Кто родился в этот день

Влади́мир Миха́йлович Петляко́в (15 (27) июня 1891, село Самбек, область Войска Донского, Российская империя — 12 января 1942, деревня Мамешево, Сергачский район, Горьковская область, РСФСР, СССР) — советский авиаконструктор.
Известные модели самолётов
Тяжелый бомбардировщик ТБ-3 (АНТ-6)
Пассажирский самолёт АНТ-14 «Правда»
Тяжелый бомбардировщик ТБ-4 (АНТ-16)
Агитационный самолёт АНТ-20 «Максим Горький»
Тяжёлый бомбардировщик дальнего действия Пе-8 (АНТ-42, ТБ-7)
Высотный истребитель ВИ-100
Пикирующий бомбардировщик Пе-2
Высотный истребитель Пе-3


🌐 Знаковые события

1931 — в США изобретатель Игорь Сикорский подал патентную заявку на вариант одновинтового вертолёта с небольшим рулевым винтом.


#Biography #Birth_Date #Events #27июня
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Так ведь? 😂
🤣7
Начало реки Бия. Телецкое озеро
🔥13
Ахаха, я бы точно не расстроился 😂
🤣3🤓1
Прям в точку 😂
🤣4
Это база
🤣2🤓1