Lambda Java 8-如何将字符串列表转换为日期列表
是否有一种方法可以将字符串列表转换为新的日期列表(在流式传输和收集时) 我的尝试: 我定义了一个SimpleDataFormat,并试图在下面的代码中使用它,但我无法让它一起工作Lambda Java 8-如何将字符串列表转换为日期列表,java,lambda,Java,Lambda,是否有一种方法可以将字符串列表转换为新的日期列表(在流式传输和收集时) 我的尝试: 我定义了一个SimpleDataFormat,并试图在下面的代码中使用它,但我无法让它一起工作 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.mm.yyyy"); ArrayList<Date> dateList = stringList.stream() .filter(s -> s.st
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.mm.yyyy");
ArrayList<Date> dateList = stringList.stream()
.filter(s -> s.startsWith("<"))
.collect(Collectors.toList());
SimpleDataFormat SimpleDataFormat=新的SimpleDataFormat(“dd.mm.yyyy”);
ArrayList dateList=stringList.stream()
.filter(s->s.startsWith(“使用map
方法
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.mm.yyyy");
final List<Date> dateList = strings.stream()
.filter(s -> s.startsWith("<"))
.map(s -> {
try {
simpleDateFormat.parse(s));
} catch (final ParseException e) {
throw new RuntimeException("Parse failed", e);
}
}).collect(Collectors.toList());
final SimpleDateFormat SimpleDateFormat=new SimpleDateFormat(“dd.mm.yyyy”);
最终列表日期列表=strings.stream()
.filter(s->s.startsWith(“您只需编写一个函数,将字符串
映射到日期
对象,如下所示:
public static void main(String[] args) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy");
List<String> stringList = new ArrayList<>();
stringList.add("10.10.2014");
Function<String, Date> function = new Function<String, Date>() {
@Override
public Date apply(String s) {
try {
return simpleDateFormat.parse(s);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
};
List<Date> collect = stringList.stream().map(function).collect(Collectors.<Date>toList());
System.out.println(collect);
}
publicstaticvoidmain(字符串[]args){
SimpleDataFormat SimpleDataFormat=新SimpleDataFormat(“dd.MM.yyyy”);
List stringList=新建ArrayList();
stringList.添加(“2014年10月10日”);
函数=新函数(){
@凌驾
公共日期应用(字符串s){
试一试{
返回simpleDataFormat.parse;
}捕获(解析异常){
抛出新的运行时异常(e);
}
}
};
List collect=stringList.stream().map(function).collect(Collectors.toList());
系统输出打印项次(收集);
}
由于您使用的是Java8
,因此可以使用新的DateTime
API
List<String> dateStrings = Arrays.asList("12.10.2016", "13.10.2016", "14.10.2016");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
List<LocalDate> localDates = dateStrings.stream().map(date -> LocalDate.parse(date, formatter)).collect(Collectors.toList());
System.out.println(localDates);
使用此定义的SimpleDataFormat
转换字符串可能是一个好主意。您可以过滤一些内容,仅此而已。以下是有关流中类型转换的几个示例。map
就是您要查找的内容。错误1:无法从列表转换为ArrayList。错误2:未处理的异常类型ParseExceptionStill不会编译。toList
返回对象的List
,而不是ArrayList
这就是我复制OP;)return null
当遇到坏数据时可能是个坏主意。因为您使用的是Java 8功能,您创建匿名类而不是lambda表达式块有什么原因吗?更正了null。另外,没有具体原因。我更喜欢匿名类,只是为了可读性。
List<String> dateStrings = Arrays.asList("12.10.2016", "13.10.2016", "14.10.2016");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
List<LocalDate> localDates = dateStrings.stream().map(date -> LocalDate.parse(date, formatter)).collect(Collectors.toList());
System.out.println(localDates);
[2016-10-12, 2016-10-13, 2016-10-14]