|
@@ -507,25 +507,39 @@ public class GeoHazardMonitorTokenController {
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 从给定的字符串列表中筛选出时间戳最新的记录
|
|
|
+ * 此方法用于处理一组特定格式的时间戳和数据字符串,找出其中时间戳最新的记录
|
|
|
+ * 每个输入字符串都由时间戳和数据组成,两者通过等号分隔
|
|
|
+ * 时间戳的格式遵循ISO 8601标准,包括日期、时间、毫秒和时区信息
|
|
|
+ *
|
|
|
+ * @param objects 包含时间戳和数据字符串的列表
|
|
|
+ * @return 返回列表中时间戳最新的数据部分
|
|
|
+ */
|
|
|
public String records(List<String> objects) {
|
|
|
-
|
|
|
+ // 创建一个DateTimeFormatter实例,用于解析和格式化时间戳
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
|
|
|
+ // 初始化最大时间戳变量
|
|
|
OffsetDateTime maxTime = null;
|
|
|
-
|
|
|
+ // 遍历输入列表,寻找时间戳最大的记录
|
|
|
for (String timeString : objects) {
|
|
|
+ // 分割时间戳和数据
|
|
|
String[] split = timeString.split("=");
|
|
|
+ // 解析时间戳
|
|
|
OffsetDateTime time = OffsetDateTime.parse(split[0], formatter);
|
|
|
+ // 更新最大时间戳
|
|
|
if (maxTime == null || time.isAfter(maxTime)) {
|
|
|
maxTime = time;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ // 创建一个迭代器,用于移除时间戳不是最新的记录
|
|
|
Iterator<String> iter = objects.iterator();
|
|
|
while (iter.hasNext()) {
|
|
|
+ // 再次遍历列表,移除时间戳不是最大的记录
|
|
|
String timeString = iter.next();
|
|
|
String[] split = timeString.split("=");
|
|
|
OffsetDateTime time = OffsetDateTime.parse(split[0], formatter);
|
|
|
+ // 如果时间戳不是最大,则移除该记录
|
|
|
if (!time.isEqual(maxTime)) {
|
|
|
iter.remove();
|
|
|
}
|