Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将ArrayList筛选为介于两个日期之间。。安卓工作室_Java_Android_Date_Sorting_Arraylist - Fatal编程技术网

Java 将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

我有一个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 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吗?还是真的需要分类?