Есть на входе не сортированный по дате список
List<UserMeal> mealList = Arrays.asList(new UserMeal(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500), ...);
Как оптимально взять из списка все значения, соответствующие одному году?
взять из списка все значения, соответствующие одному году можно например так:
import java.util.*;
import java.util.stream.*;
import java.util.function.*;
public class UserMealFilter {
//для отфильтрованного списка
private List<UserMeal> filteredMeal = new ArrayList<>();
public List<UserMeal> filterByYear(List<UserMeal> inputList, int targetYear) {
//получаем стрим из List
Stream<UserMeal> mealListStream = inputList.stream();
//лямбда для фильтрации
Predicate<UserMeal> filter = userMeal -> userMeal.getDateTime().getYear()==targetYear;
//лямбда для сохранения
Consumer<UserMeal> consumer = userMeal -> filteredMeal.add(userMeal);
//сама фильтрация
mealListStream.filter(filter)
.forEach(consumer);
return filteredMeal;
}
}
Вызывать так
UserMealFilter userMealFilter = new UserMealFilter();
List<UserMeal> filteredMeal = userMealFilter.filterByYear(mealList, 2015);
А если вам сортировать надо, то это совсем другая история (смотрите интерфейс Comparator и Comparable)
Виртуальный выделенный сервер (VDS) становится отличным выбором
Использую SQLite для хранения и доступа к данным в андроид-приложенииЗадаю
Всем привет кто может подсказать код для создания вот такого текста \u0074\u0065\u0073\u0074 Пример кода должен выглядеть так
При перемещении каталога c Filesmove(Path sourse, Path target) получаю java
пишу REST Api сервер, хочу добавить авторизациюДля теста добавил следующие ресурсы