Java 将ArrayList筛选为介于两个日期之间。。安卓工作室
我有一个ArrayList“列表” 我想将列表排序到日期之间Java 将ArrayList筛选为介于两个日期之间。。安卓工作室,java,android,date,sorting,arraylist,Java,Android,Date,Sorting,Arraylist,我有一个ArrayList“列表” 我想将列表排序到日期之间 public List<Receipts> sortListByDate(String date1,String date2,List<Receipts> receipts){ List<Receipts> sortedList = new ArrayList<>(); // if receipts.date() is between(or including) date1
public List<Receipts> sortListByDate(String date1,String date2,List<Receipts> receipts){
List<Receipts> sortedList = new ArrayList<>();
// if receipts.date() is between(or including) date1 and date2 then sortedList.add(that object)
return sortedList;
}
公共列表sortListByDate(字符串date1、字符串date2、列表收据){
List sortedList=新建ArrayList();
//如果receipts.date()介于(或包括)date1和date2之间,则sortedList.add(该对象)
返回分类列表;
}
receive.date()、date1和date2的格式为字符串“dd-MM-yyyy”
帮助我排序[要完成“sortListByDate”功能]从
收据流中,您需要根据日期筛选元素(即不在日期1
之前,不在日期2
之后),对结果流排序,将其收集到列表中,然后返回相同的内容
步骤:
public List<Receipts> sortListByDate(String date1, String date2, List<Receipts> receipts) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate localDate1 = LocalDate.parse(date1, formatter);
LocalDate localDate2 = LocalDate.parse(date2, formatter);
return receipts.stream()
.filter(e -> !LocalDate.parse(e.date(), formatter).isBefore(localDate1)
&& !LocalDate.parse(e.date(), formatter).isAfter(localDate2))
.sorted()
.collect(Collectors.toList());
}
使用DateTimeFormatter
解析日期戳
从收据
创建流,并使用所需条件应用过滤器
对结果流进行排序
将生成的流收集到列表中
并返回相同的流
代码:
public List<Receipts> sortListByDate(String date1, String date2, List<Receipts> receipts) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate localDate1 = LocalDate.parse(date1, formatter);
LocalDate localDate2 = LocalDate.parse(date2, formatter);
return receipts.stream()
.filter(e -> !LocalDate.parse(e.date(), formatter).isBefore(localDate1)
&& !LocalDate.parse(e.date(), formatter).isAfter(localDate2))
.sorted()
.collect(Collectors.toList());
}
公共列表sortListByDate(字符串date1、字符串date2、列表收据){
DateTimeFormatter formatter=模式的DateTimeFormatter.of(“dd-MM-yyyy”);
LocalDate localDate1=LocalDate.parse(date1,格式化程序);
LocalDate localDate2=LocalDate.parse(date2,格式化程序);
返回收据。stream()
.filter(e->!LocalDate.parse(e.date(),formatter).isBefore(localDate1)
&&!LocalDate.parse(e.date(),格式化程序).isAfter(localDate2))
.已排序()
.collect(Collectors.toList());
}
您可以在Receipts类中实现Comparable,并根据需要重写compareTo方法
然后调用列表中的排序方法
有关如何操作的更多信息,请参阅文档:
您的问题是什么?如何将arraylist排序到两个日期之间?sort实际上是指filter吗?还是真的需要分类?