我正在构建一个应用程序,我在其中下载天气数据并将其存储到数据库中。目标是每 30 分钟刷新一次数据。我的数据类的一部分如下所示:
public class Timeseries {
private Long timeseriesId;
private String time;
private Data data;
}
通过从 api 下载数据,部分数据是新的(新的时间序列),其余数据会根据更多可能的天气条件进行更新。我的目标是添加新记录并用新数据更新旧记录。为了合并这些列表,我正在从数据库中下载列表,并从我正在使用的 API 中下载第二个天气更新列表。我正在尝试在下面的方法中合并这些列表。到目前为止,我已经设法将来自 api 的新记录与从数据库中提取的列表合并:
public List<Timeseries> updateWeather(List<Timeseries> oldList, List<Timeseries> newData) {
List<Timeseries> timeseries = new ArrayList<>(
Stream.of(oldList, newData)
.flatMap(List::stream)
.collect(Collectors.toMap(Timeseries::getTimeseriesId,
timeseries1 -> timeseries1,
(Timeseries x, Timeseries y) -> x == null ? y : x))
.values());
return timeseries;
}
如何将“newData”列表中的值更新到“timeseries”列表中,其中字符串“时间”等于现有记录的时间?