java - Lambda Java 8 - 如何在将字符串列表流式传输到日期列表时进行转换

标签 java lambda

有没有办法将字符串列表(在流式传输和收集时)也转换为新的日期列表?

我的尝试:

我定义了一个 SimpleDateFormat 并尝试在下面的代码中使用它,但我无法让它一起工作。

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.mm.yyyy");

ArrayList<Date> dateList = stringList.stream()
              .filter(s -> s.startsWith("<"))
              .collect(Collectors.toList());

解决方案

根据使用 map 的提示,我现在得到了一个看起来像这样的可行解决方案。当然欢迎对此进行任何优化!

int year = 2016;
int month = 2;
int day = 15;


final List<LocalDate> dateListEarlier = dateList.stream()
        .filter(s -> s.startsWith("<"))
        .map(s -> s.substring(1).trim())
        .map(s -> LocalDate.parse(s, formatter))
        .sorted()
        .filter(d -> d.isAfter(LocalDate.of(year, month, day)))
        .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);

输出

[2016-10-12, 2016-10-13, 2016-10-14]

关于java - Lambda Java 8 - 如何在将字符串列表流式传输到日期列表时进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40047313/

相关文章:

Java Swing GUI - 通过鼠标单击从不同的类重新绘制图形

单击单元格进行编辑时,JavaFX 8 TreeView 显示不正确的字符串

java - Maven不使用本地JRE/JDK

linq - 在 where 子句中委托(delegate)

c# - 关于泛型、继承和链接的棘手问题

java - 使用不执行此操作的接口(interface)中指定的返回和参数类型相关的泛型实现方法

amazon-s3 - S3 上传时调整大小

Java lambda 方法和新对象

c# - 从异步 lambda Action 转换为 Func<Task>?

java - 在java中嵌套循环添加第一个条目两次