gpt4 book ai didi

java - 按开始和结束时间过滤带日期的 ArrayList

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:18 25 4
gpt4 key购买 nike

我正在实现一个简单的 ListView,其中数据源是一个包含名称、开始和结束日期的 ArrayList。在 iOS 中,我会使用一个简单的 NSPredicate 来过滤数组,但在 Android 和 Java 中,我对应该使用什么感到困惑。欢迎提出任何建议。

最佳答案

您可以使用 Date.before 和 Date.after 方法。这些允许您过滤日期列表(对于特定范围内的日期(例如一月)):

一个。使用带有开始和结束日期的 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 before 和 after 方法。

关于java - 按开始和结束时间过滤带日期的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26075490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com