java - 如何在 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());
任何帮助将不胜感激。谢谢!
解决方案
为什么是类型的dateAdded
属性?将其更改为.People
String
LocalDate
改变startDate
和endDate
改变LocalDate
。
然后做:
filter(t -> t.getType().equals(type)
&& t.getDateAdded().compareTo(startDate) >= 0
&& t.getDateAdded().compareTo(endDate) <= 0)
推荐阅读
- javascript - 如何使用 Charts.js 制作一维散点图?
- analytics - 使用 Quicksight 中的趋势可视化 KPI
- c# - 在 AvaloniaUI 中,如何显示来自 Web URL 的图像?
- triggers - 复合键触发操作
- node.js - 模拟 lodash .isEqual Nodejs Jest 框架超级测试
- python - 如何在 python 中为函数创建模板?
- r - 如何从向量中的名称调用环境对象
- java - 对象变量 - 局部变量可能尚未初始化
- c++ - 如何调整大小和区域对齐无框窗口 qt6
- java - 如何在不为每个进程请求一个 Java 的情况下同时运行不同的 Java 进程