java 按时间排序List<Map<String, Object>> 中的 "出站时间" 进行排序 该字段可能为null, 时间格式为"yyyy-MM-dd HH:mm:ss" 降序
时间: 2024-03-09 15:48:21 浏览: 47
您可以使用Java 8的Stream API和Comparator来按照时间字段排序List<Map<String, Object>>。以下是示例代码:
```java
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
// 添加数据到list中
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
List<Map<String, Object>> sortedList = list.stream()
.filter(map -> map.get("出站时间") != null) // 过滤掉出站时间为null的Map
.sorted(Comparator.comparing(map -> LocalDateTime.parse((String)map.get("出站时间"), formatter)).reversed()) // 按照出站时间进行降序排序
.collect(Collectors.toList());
```
在代码中,我们首先创建一个DateTimeFormatter对象来解析时间字段。然后,我们使用Stream API的filter()方法过滤掉出站时间为null的Map,并使用sorted()方法按照出站时间进行排序。最后,我们使用collect()方法将排序后的结果收集到一个新的List中。
相关问题
java 按时间排序List<Map<String, Object>> 中的 "出站时间" 进行排序 该字段可能为null, 时间格式为"yyyy-MM-dd HH:mm:ss"
可以使用Java8的Stream API和Comparator来对List<Map<String, Object>>中的"出站时间"字段进行排序。具体实现代码如下:
```java
List<Map<String, Object>> list = ...; // 初始化List<Map<String, Object>>
// 对"出站时间"字段进行排序
List<Map<String, Object>> sortedList = list.stream()
.filter(map -> map.get("出站时间") != null) // 过滤出"出站时间"不为null的Map
.sorted(Comparator.comparing(map -> LocalDateTime.parse((String) map.get("出站时间"), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))) // 按时间排序
.collect(Collectors.toList());
// 输出排序后的List<Map<String, Object>>
sortedList.forEach(System.out::println);
```
上述代码中,使用了Java8的Stream API和Comparator,过滤出"出站时间"不为null的Map,并按时间格式解析"出站时间"字段,最后使用collect方法将排序后的Map收集到一个List中。
List<Map<String, Object>> rowList = jdbcTemplate.queryForList(pageSql);查出来的日期时间字段,怎么赋值给对象的String属性字段
`jdbcTemplate.queryForList(pageSql)`是Spring JDBC中的一个方法,用于执行SQL查询并将结果集作为List<Map<String, Object>>返回。在这种情况下,每个Map代表一行结果,键为列名,值为对应的列数据。
当你从数据库查询出来的时间或日期字段是`java.sql.Timestamp`类型时,你可能需要将其转换为`String`类型,以便赋值给对象的`String`属性。以下是一个简单的方法来实现这一转换:
```java
// 假设obj是你的目标对象,dateStrKey是Map中的日期时间字段的键,dateStrAttrName是对象的String属性名
for (Map<String, Object> rowMap : rowList) {
Timestamp timestamp = (Timestamp) rowMap.get(dateStrKey);
if (timestamp != null) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 指定日期时间的格式
String dateStr = sdf.format(timestamp); // 转换为指定格式的字符串
// 假设你的对象有一个方法叫做setDateStrAttrName用来设置日期字符串
obj.setDateStrAttrName(dateStr);
}
}
```
在上述代码中,我们首先从`rowMap`中获取`Timestamp`对象,然后创建一个`SimpleDateFormat`实例来指定我们希望的日期时间格式。接着,使用`SimpleDateFormat`的`format`方法将`Timestamp`对象转换成一个格式化的字符串。最后,我们通过调用对象的setter方法来设置这个字符串。
请注意,你可能需要根据实际的字段名和属性名以及日期格式来调整上述代码。
阅读全文