java List<String> 转换 为List<Date> 再转换为 List<long>
时间: 2023-05-18 14:03:03 浏览: 218
可以使用 Java 8 中的 Stream API 来实现这个转换过程:
List<String> stringList = Arrays.asList("2022-01-01", "2022-02-01", "2022-03-01");
List<Date> dateList = stringList.stream().map(Date::valueOf).collect(Collectors.toList());
List<Long> longList = dateList.stream().map(Date::getTime).collect(Collectors.toList());
这里我们首先将字符串列表转换为日期列表,然后再将日期列表转换为长整型列表。
相关问题
java List<String> 转换成date中的getTime
可以使用 SimpleDateFormat 类将字符串转换为 Date 类型,然后使用 getTime() 方法获取时间戳。具体代码如下:
```
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("2021-10-01 12:00:00");
long timestamp = date.getTime();
```
其中,"yyyy-MM-dd HH:mm:ss" 是日期格式化字符串,需要根据实际情况进行修改。
List<Object> 根据 编码分组,取最大修改时间,转换为 <String,Date>
可以使用 Java 8 的 Stream API 来实现这个需求。具体实现步骤如下:
1. 使用 Stream 的 `collect()` 方法将 List 转换为 Map,其中键为编码,值为包含编码和修改时间的对象。
2. 使用 Stream 的 `map()` 方法将 Map 中的对象转换为包含编码和修改时间的字符串。
3. 使用 Stream 的 `groupingBy()` 方法将字符串按照编码分组。
4. 使用 Stream 的 `max()` 方法获取每组中修改时间最大的对象。
5. 使用 Stream 的 `map()` 方法将每组中的对象转换为包含编码和修改时间的键值对。
代码如下:
```java
List<Object> list = ...; // 给定的 List
Map<String, Object> map = list.stream()
.collect(Collectors.toMap(
obj -> ((YourObject) obj).getEncoding(), // 键为编码
obj -> obj, // 值为包含编码和修改时间的对象
(a, b) -> a.getModifiedTime() > b.getModifiedTime() ? a : b // 合并时取修改时间最大的对象
));
Map<String, Date> result = map.entrySet().stream()
.map(entry -> entry.getValue().getEncoding() + "," + entry.getValue().getModifiedTime()) // 将对象转换为字符串
.collect(Collectors.groupingBy(
str -> str.split(",")[0], // 按照编码分组
Collectors.maxBy(Comparator.comparing(str -> str.split(",")[1]))) // 获取每组中修改时间最大的字符串
.entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey, // 键为编码
entry -> new Date(Long.parseLong(entry.getValue().get().split(",")[1])))); // 值为修改时间
```
这样就可以将 List<Object> 根据编码分组,取最大修改时间,转换为 <String,Date> 的 Map 了。
阅读全文