首页 > 解决方案 > 如何在 Java 中使用 filter() 从 arrayList 中过滤字符串日期范围?

问题描述

我正在尝试从List<People>存储为Strings.

List(仅显示 3 个条目):

[["Steve","Baseball","Brazil","August 14, 2020"], ["Ammie","Basketball","Malaysia","September 8, 2021"], ["Tom","Cricket","UK","December 1, 2020"]]

如何过滤 to 之间startDate (String): August 14, 2020的所有记录endDate (String): September 8, 2020

目前我正在这样做,但它没有得到范围值。它只匹配我不想要的开始日期或结束日期。

return people.stream().filter(t -> {
       return t.getType().equals(type) && 
           (t.getDateAdded().equals(startDate) ||
                 t.getDateAdded().equals(endDate));
       }
).limit(numberOfRecords).collect(Collectors.toList());

任何帮助将不胜感激。谢谢!

标签: javastringdatefilterlambda

解决方案


为什么是类型的dateAdded属性?将其更改为.PeopleStringLocalDate

改变startDateendDate改变LocalDate

然后做:

filter(t -> t.getType().equals(type)
         && t.getDateAdded().compareTo(startDate) >= 0
         && t.getDateAdded().compareTo(endDate) <= 0)

推荐阅读