Java lambda复制具有不同键类型的映射
我们有一个Java lambda复制具有不同键类型的映射,java,lambda,java-8,Java,Lambda,Java 8,我们有一个Map,需要将其转换为Map。 这里的String是存储为String的日期 {"1999-11-07T18:30:00.000+0000":{"property1":"value1","property2":valuep1}, {"1998-11-07T18:30:00.000+0000":{"property1":"value2","property2":valuep2} 使用lambda和streams有什么简单或直接的方法吗?我们正在使用java8和jacksonapi yo
Map
,需要将其转换为Map
。
这里的String是存储为String的日期
{"1999-11-07T18:30:00.000+0000":{"property1":"value1","property2":valuep1},
{"1998-11-07T18:30:00.000+0000":{"property1":"value2","property2":valuep2}
使用lambda和streams有什么简单或直接的方法吗?我们正在使用java8和jacksonapi
yourMap.entrySet().stream()
.collect(Collectors.toMap(
this::parseDate,
Map.Entry::getValue
));
创建一个将字符串解析为日期的方法
private Date parseDate(Map.Entry<String, Object> e) {
try {
return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").parse(e.getKey());
} catch (ParseException ex) {
ex.printStackTrace();
}
return some date;
}
私有日期解析日期(Map.Entry e){
试一试{
返回新的SimpleDataFormat(“yyyy-MM-dd'HH:MM:ss.SSSZ”).parse(e.getKey());
}捕获(解析异常){
例如printStackTrace();
}
返回某个日期;
}
我建议您不要使用Date
并根据需要使用LocalDate
或LocalDateTime
。大多数日期方法都已弃用。格式字符串应为yyyy-MM-dd'T'HH:MM:ss.SSSZ
,而Map.Entry
应为
而非