Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.
Закрыт 9 месяцев назад.
Читал всякие примеры по java и наткнулся на такой вот код:
public List<String> list() {
return model.stream()
.map(User::getName)
.collect(Collectors.toList());
}
Может кто-нибудь объяснить что тут вообще происходит, как я понял идёт возврат списка имён класса User или что-то другое? Где об этом всём можно почитать, посмотреть?
Это Stream API
. Оно предназначено для работы со структурами данных, в основном с коллекциями и массивами.
Краткая выжимка:
Stream — это объект для универсальной работы с данными. Мы указываем, какие операции хотим провести, при этом не заботясь о деталях реализации. Например, взять элементы из списка сотрудников, выбрать тех, кто младше 40 лет, отсортировать по фамилии и поместить в новый список.
Не знаю, какой тип у model
, но предположу, что List
. В данном примере создается стрим из экземпляров User
хранящихся в листе - model.stream()
.
Потом созданный стрим "мапиться" - изменяется на другой стрим с другими значениями с помощью map
.
Метод map
применяет функцию к каждому элементу и затем возвращает
стрим, в котором элементами будут результаты функции.
Метод map
принимает лямбда выражение(которое соответствует интерфейсу Function
) и возвращает значение, которое получается после применения выражения к каждому элементу стрима. К каждому элементу стрима(т.е. к экземплярам User
) применяется User.getName()
, и вместо стрима с User
получается стрим из переменных name
User
.
После этого стрим "собирается в список" с помощью collect(Collectors.toList())
.
С его помощью можно собрать все элементы в список, множество или другую коллекцию, сгруппировать элементы по какому-нибудь критерию, объединить всё в строку и т.д.
На самом деле, у вас в примере очень простой стрим, бывают намного сложнее. Чтобы понять как работают стримы советую прочитать книги по функциональной Java, или в крайнем случае циклы статей по стримам, например этот или этот. Также есть хороший мини-справочник по Stream API, но его будет сложно понять если не знаком со стримами.
В итоге из коллекции [User1, User2, User3]
получится коллекция ["Вася", "Петя", "Вова"]
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Разбираюсь с leanback либойСтоит задача реализовать плеер для стримов
Подскажите почему когда я закрываю приложение и снова открываю то у меня checkBox не становятся isChecked
Есть страница где идут 6 html5 видео подряд, у всех просписано loop="1"Каждое видео запускается когда находится в зоне видимости Но два последние...