java – 按开始和结束时间过滤带有日期的ArrayList
发布时间:2020-12-15 04:22:43 所属栏目:Java 来源:网络整理
导读:我正在实现一个简单的ListView,其中数据源是一个ArrayList,其中包含Name,Start和End日期.在iOS中,我会使用一个简单的NSPredicate来过滤数组,但在 Android和Java中,我对我应该使用的内容感到困惑.欢迎任何建议. 解决方法 您可以使用Date.before和Date.after方
我正在实现一个简单的ListView,其中数据源是一个ArrayList,其中包含Name,Start和End日期.在iOS中,我会使用一个简单的NSPredicate来过滤数组,但在
Android和Java中,我对我应该使用的内容感到困惑.欢迎任何建议.
解决方法
您可以使用Date.before和Date.after方法.这些允许您过滤日期列表(对于特定范围(例如1月)的日期):
一个.使用带有开始和结束日期的Java 8过滤器. 湾使用Java循环/迭代器来检查开始和结束日期. import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.stream.Collectors; public class FilterStartAndEndDate { private SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); private Collection<Date> dateList = null; private Date start = null; private Date end = null; private FilterStartAndEndDate() throws ParseException { dateList = new ArrayList<Date>() {{ add(sdf.parse("01/01/2016")); add(sdf.parse("02/01/2016")); add(sdf.parse("03/02/2016")); add(sdf.parse("04/01/2016")); add(sdf.parse("05/01/2016")); }}; start = sdf.parse("31/12/2015"); end = sdf.parse("01/02/2016"); } /** * Filter dates with Lambda * * @throws ParseException */ private void getDatesBetweenStartAndFinishWithFilter() throws ParseException { dateList.stream() .filter(dates -> dates.after(start) && dates.before(end)) .collect(Collectors.toList()) .forEach(januaryDate->System.out.println(januaryDate)); } /** * Filter dates with Iterator * * @throws ParseException */ private void getDatesBetweenStartAndFinish() throws ParseException { Collection<Date> datesInJanuaryList = new ArrayList<>(); for (Date eachDate : dateList) { if (eachDate.after(start) && eachDate.before(end)) { datesInJanuaryList.add(eachDate); } } for (Date eachDate : datesInJanuaryList) { System.out.println(eachDate); } } public static void main(String[] args) throws Exception { FilterStartAndEndDate datesInJanuary = new FilterStartAndEndDate(); datesInJanuary.getDatesBetweenStartAndFinish(); datesInJanuary.getDatesBetweenStartAndFinishWithFilter(); } } 示例代码过滤器的日期是1月份,使用Lambda过滤器和Java迭代器.两者都使用方法之前和之后的Date. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |