Лекция 9. Stream API Терминальные операции и коллекторы

  Рет қаралды 16,031

Computer Science Center

Computer Science Center

Күн бұрын

Пікірлер: 21
@viewer_evgeniy
@viewer_evgeniy 4 ай бұрын
Это просто нечто. Очень редко случается найти спикера, которого просто взахлеб слушаешь. Жалко, что Тагир не в мире веб-разработки. Очень бы хотел послушать от него про спринг, хибер, паттерны и лучшие практики во всем этом, как он рассказывает про Java Core.
@ansarozden5767
@ansarozden5767 Жыл бұрын
Спасибо большое Тагиру и учебному центру за то, что вот так бескорыстно предоставляете доступ к своим лекциям!
@1236Destructor
@1236Destructor 7 күн бұрын
1:04:10 В качестве бинарного оператора можно взять Math.min() и тогда решение будет выглядеть еще более изящно, с тремя метод-референсами toMap(Book::getCategory, Book::getPrice, Math::min)
@ЮрийШотин
@ЮрийШотин 2 жыл бұрын
Очень познавательно. Чем больше смотрю про Stream API, тем больше нового узнаю. Полезно знать про реализацию в разных версиях Java.
@John_Smith_Java
@John_Smith_Java 2 жыл бұрын
Коллекторы - восхитительны! Тагир - великолепен!
@PatBatTB
@PatBatTB Жыл бұрын
Спасибо за курс! Думаю было бы хорошим тоном ссылки из видео дублировать в описании. ))
@John_Smith_Java
@John_Smith_Java 2 жыл бұрын
7:25 "в этом месте мы начинаем спускать в ад" - в голосину😂😂😂
@virus0936
@virus0936 2 жыл бұрын
Тоже проорал)
@oldjohn1503
@oldjohn1503 Жыл бұрын
Спасибо, Тагир! Разжевал)
@John_Smith_Java
@John_Smith_Java 2 жыл бұрын
Тагир крутой.
@quaddamage7765
@quaddamage7765 2 жыл бұрын
Тагир лучший!
@ShadowKevil
@ShadowKevil 11 ай бұрын
В лекции почти не коснулись параллельных стримов. Почему не стоит использовать параллельные стримы по умолчанию?
@arvoglade8753
@arvoglade8753 5 ай бұрын
Параллельные стримы не стоит использовать по умолчанию, из-за накладных расходов на распараллеливание до, слияние после и управление потоками и дополнительной памятью в процессе. Например на сотне элементов параллельные стримы могут работать в тысячи раз медленнее, чем обычные. Стоит распараллеливать, если объём данных ожидается большой, и, что важнее, если вы понимаете, что это узкое место, вы провели тесты, и выяснилось, что параллельные стримы работают лучше. Нет универсального и одновременно точного способа теоретически понять, когда распараллеливание показывает выгоду, поэтому лучше проверять
@АнтонВаськин-б1б
@АнтонВаськин-б1б Жыл бұрын
кто - нибудь решил упражнение с 54:25 ?
@anastasiya_pesto
@anastasiya_pesto Жыл бұрын
Я пытаюсь сижу, пока не получилось. А ты решил?
@АнтонВаськин-б1б
@АнтонВаськин-б1б Жыл бұрын
@@anastasiya_pesto неа , просто , кажется , как будто и невозможно
@DenisReto
@DenisReto Жыл бұрын
Без промежуточного итога не получилось решить, только если добавить промежуточный класс public record UserDepartment(User user, Department department) { }; То решение такое: private Map getUserChiefs(Company company) { Stream userDepartments = company.departments .flatMap(d -> d.users.map((u -> new UserDepartment(u, d)))); return userDepartments .collect(groupingBy(ud -> ud.user, mapping(ud -> ud.department.chief, toList()) )); }
@DenisReto
@DenisReto Жыл бұрын
ну и такой тест прогнал для наглядности @Test public void test() { //map key - is user - worker //map - value list of chiefs User denis = new User("Denis"); User jack = new User("Jack"); User john = new User("John"); User bob = new User("Bob"); User ivan = new User("Ivan"); Department itDepartment = new Department("IT", john, Stream.of(denis, jack, bob)); Department accountingDepartment = new Department("Accounting", ivan, Stream.of(jack, bob)); Company megaIndustrials = new Company(Stream.of(itDepartment, accountingDepartment)); Map userChiefs = getUserChiefs(megaIndustrials); assertTrue(userChiefs.containsKey(jack)); assertEquals(2, userChiefs.get(jack).size()); assertEquals(2, userChiefs.get(bob).size()); assertTrue(userChiefs.get(jack).containsAll(List.of(john, ivan))); assertTrue(userChiefs.get(bob).containsAll(List.of(john, ivan))); assertEquals(1, userChiefs.get(denis).size()); assertTrue(userChiefs.get(denis).contains(john)); }
@dotherap
@dotherap Жыл бұрын
@@MaksimWojtk я вот так сделал через группировку: company.departments().stream() .flatMap(d -> d.users() .map(u -> new AbstractMap.SimpleEntry(u, d.chief()) {})) .collect(groupingBy(AbstractMap.SimpleEntry::getKey, mapping(AbstractMap.SimpleEntry::getValue, toList()))) Но идею с парой использовал вашу. Не знаю, возможно ли как-то проще.
@Анастасия-ц1х
@Анастасия-ц1х Жыл бұрын
на втором часе мозг закипел... тяжеловато.
Лекция 10. Ввод-вывод
1:41:56
Computer Science Center
Рет қаралды 13 М.
Their Boat Engine Fell Off
0:13
Newsflare
Рет қаралды 15 МЛН
Тагир Валеев - Stream API: рекомендации лучших собаководов
55:29
JPoint, Joker и JUG ru — Java-конференции
Рет қаралды 43 М.
Шины событий VS шины данных
14:32
Главный Технический Чувак
Рет қаралды 1 М.
Евгений Борисов - Spring - Глубоко и не очень
1:03:57
JPoint, Joker и JUG ru — Java-конференции
Рет қаралды 162 М.
#1 Что такое корутина. Важные особенности || Курс по корутинам
16:40
Android Broadcast. Все об Андроид разработке
Рет қаралды 93 М.
OpenAPI и Swagger Editor - своё описание REST API с нуля
16:35
IT как Конструктор
Рет қаралды 96 М.
Лекция 8. Stream API (Программирование на Java)
1:45:01
Computer Science Center
Рет қаралды 26 М.
Физик-теоретик решает ЕГЭ по математике
2:42:09
Физика для всех! СПбГУ
Рет қаралды 10 М.