流中的 if 语句

Nat*_*eds 0 java java-stream

是否可以在下面的地图中使用 if 语句条件?

public Map<LocalDate, Double> avarageTemperatures(LocalDate dateFrom, LocalDate dateTo) {

    Map<LocalDate, Double> tempAverage = Data.stream()
            .collect(Collectors.groupingBy(Weather::getDateTime,
                    Collectors.averagingDouble(Weather::getTemp)));

    System.out.println("average: " + tempAverage);
    return tempAverage;
}
Run Code Online (Sandbox Code Playgroud)

我想只返回日期和tempAverage对之间的日期datefromdateTo,这是用户输入。所以我想实现一个 if 语句

for (Weather weather : Data){
    if(!weather.getDateTime().isAfter(dateTo) && !weather.getDateTime().isBefore(dateFrom)){}
}
Run Code Online (Sandbox Code Playgroud)

其中weatherData是包含日期和温度的 ArrayList。我的天气课:

public class Weather {
    private LocalDate dateTime;
    private LocalTime time;
    private double temperature;
    private String tag;
    //setter, getter, constructor 
}
Run Code Online (Sandbox Code Playgroud)

日期格式为 1946-01-15,温度格式为 -0.3。

Eng*_*uad 6

您可以使用filter()

weatherData.stream().filter(weather -> !weather.getDateTime().isAfter(dateTo) &&
                                    !weather.getDateTime().isBefore(dateFrom))...
Run Code Online (Sandbox Code Playgroud)