是否可以在下面的 map 中使用 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;
}
我只想返回 datefrom
和 dateTo
之间的日期和 tempAverage,这是用户输入。所以我想实现一个 if 语句,例如
for (Weather weather : Data){
if(!weather.getDateTime().isAfter(dateTo) && !weather.getDateTime().isBefore(dateFrom)){}
}
其中weatherData
是一个包含日期和温度的ArrayList。我的天气等级:
public class Weather {
private LocalDate dateTime;
private LocalTime time;
private double temperature;
private String tag;
//setter, getter, constructor
}
日期的格式为 1946-01-15,温度的格式为 -0.3。
最佳答案
您可以使用filter()
:
weatherData.stream().filter(weather -> !weather.getDateTime().isAfter(dateTo) &&
!weather.getDateTime().isBefore(dateFrom))...
关于java - 流中的 If 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60674360/