Сканирование аннотаций

Как я уже писал, аннотации в Java это просто метки в коде, которые находятся и анализируются другим кодом. А, следовательно, недостаточно уметь просто создавать аннотации, надо научиться и находить неизвестный код, который ими аннотирован. И, к сожалению, это довольно непросто. Читать далее Сканирование аннотаций

Hello, annotations!

Главное что нужно знать об аннотациях — они ничего не делают! Аннотации представляют собой простые метки в коде и больше ничего. Когда кто-то говорит «Аннотация @DoSomething делает блаблабла» это фактически означает, что кто-то где-то вызывает код, который находит типы с этой Читать далее Hello, annotations!

Java 8 Stream API, часть шестая: собственный коллектор

Во второй статье о использовании Stream API я показывал, как использовать стандартные коллекторы. Настало время разработки собственного коллектора. Допустим, мы ходим посчитать медианное значение длин строк в примере из второй статьи. Готового коллектора, который считает медиану, нет в стандартной библиотеке, поэтому Читать далее Java 8 Stream API, часть шестая: собственный коллектор

Java8 stream API, часть пятая: создание потоков

В предыдущих статьях о Stream API объекты Stream всегда создавались из Iterable, вызовами stream() или parallelStream(). Однако существуют и другие источники создания Stream. Stream из файла В примере с подсчётом числа фильмов, выпущенных в тот или иной год, файл с данными Читать далее Java8 stream API, часть пятая: создание потоков

Java8 stream API, часть четвёртая: сортировка

Если к примеру многопоточной обработки дописать вывод результатов, мы увидим, что данные после обработки имеют случайный порядок:

Что, если нам нужен не просто список количества фильмов в каждом году, а ещё и отсортированный по годам? Можно, конечно, позвать Читать далее Java8 stream API, часть четвёртая: сортировка

Java8 stream API, часть третья: многопоточность

Во второй части я упомянул, что map/reduce подразумевает параллельное исполнение шага map.  Stream API предоставляет очень простой механизм для выполнения операций над потоком параллельно: входной поток разбивается на части, если это возможно, и каждая такая часть обрабатывается параллельно с остальными, Читать далее Java8 stream API, часть третья: многопоточность

Java 8 Stream API, часть вторая: map/reduce

Stream API настолько большая тема, что приходится разбивать её на несколько статей. В первой части были примеры решения классических проблем при работе с коллекциями, а во второй я покажу использование редуцирующих функций. Map/Reduce Map/Reduce это в общем-то модный buzzword. На Читать далее Java 8 Stream API, часть вторая: map/reduce

Java 8 stream API

Stream API это вершина нововведений в java 8: используя функциональные интерфейсы и лямбда-выражения Stream API предоставляет функциональный подход к обработке наборов данных. Говоря проще, Stream API позволяет решать классические задачи по обработке наборов данных более гибко и элегантно:

  Читать далее Java 8 stream API

Лямбда выражения

Cреди прочих нововведений в примере Hello,Streams  был показан код, фильтрующий коллекцию:

Выражение, передающееся в filter() — лямбда-выражение, то есть блок кода с параметрами, который можно передать в другое место, поэтому он может быть выполнен позже, один или несколько раз. Полный синтаксис Читать далее Лямбда выражения

Hello, Streams!

В java8 появились таки приятные и взамосвязанные между собой вещи, как functional interfaces, lambda functions и streams. Java, конечно, не стала от этого функциональным языком, но некоторые вещи стало писать гораздо проще. Streams позволяют обрабатывать наборы данных функциональным образом, собирая Читать далее Hello, Streams!