Сортировка по году в списке с LocalDateTime

163
01 августа 2018, 00:30

Есть на входе не сортированный по дате список

List<UserMeal> mealList = Arrays.asList(new UserMeal(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500), ...);

Как оптимально взять из списка все значения, соответствующие одному году?

Answer 1

взять из списка все значения, соответствующие одному году можно например так:

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)

READ ALSO
SQLite Android и вывод данных в TextView

SQLite Android и вывод данных в TextView

Использую SQLite для хранения и доступа к данным в андроид-приложенииЗадаю

169
Создание приложения шифрования текста на JAVA \u0074

Создание приложения шифрования текста на JAVA \u0074

Всем привет кто может подсказать код для создания вот такого текста \u0074\u0065\u0073\u0074 Пример кода должен выглядеть так

190
java.nio.file.AccessDeniedException на Windows 10

java.nio.file.AccessDeniedException на Windows 10

При перемещении каталога c Filesmove(Path sourse, Path target) получаю java

184
Spring Security, REST Api и DataSource

Spring Security, REST Api и DataSource

пишу REST Api сервер, хочу добавить авторизациюДля теста добавил следующие ресурсы

167