我正在try 根据销售日期对数组进行排序,格式为MM/dd/yy.目前,我在排序后数组的第一个对象中获取了错误的日期.排序数组中第一个对象的预期日期为01/12/24.

Code

import java.util.*;
import java.util.stream.*;

class Car{
    String name;
    String sold;
    public Car(String name, String sold){
        this.name = name;
        this.sold = sold;
    }
    public String getSold(){
        return this.sold;
    }
}

public class MyClass {
    public static void main(String args[]) {
    
      List<Car> list = new ArrayList<Car>();
      list.add(new Car("bmw", "01/12/24"));
      list.add(new Car("jeep", "02/12/23"));
      list.add(new Car("audi", "12/12/23"));
      
      List<Car> sortedList = list.stream().sorted(Comparator.comparing(Car::getSold).reversed()).collect(Collectors.toList());
      
      System.out.println("sorted "+ sortedList.get(0).sold);
    }
}

我创建了一个使用JDoodle的工作示例.有人能帮帮忙吗?

推荐答案

您必须将销售日期解析为日期,并按日期进行比较:

    DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern("MM/dd/yy");
    List<Car> sortedList = list.stream()
            .sorted(Comparator.<Car, LocalDate>comparing(car -> LocalDate.parse(car.getSold(), dayFormatter)).reversed())
            .toList();

Java相关问答推荐

当列顺序更改时,Table View列列表的Change. wasPermanted()总是返回假

Java字符串常数池困惑

如何在Docker容器中使用wireock—Webhooks阻止请求?

对于几乎不涉及逻辑的请求,您是否应该使用命令模式?

AssertJ Java:多条件断言

在Java中,如何按一个属性升序,然后按另一个属性降序对对象列表进行排序?

SpringBoot Kafka自动配置-适用于SASL_PLAYTEXT的SSLBundle 包,带SCRAM-SHA-512

带有Health Check的Spring Boot BuildPack打破了本机映像构建过程

如何使用路径过渡方法使 node 绕圆旋转?

SpringBoot:在条件{Variable}.isBlank/{Variable}.isEmpty不起作用的情况下进行路径变量验证

try 使用类来包含JSON响应

如何从HttpResponse实例获取Entity对象的内容?

JavaFX:无论何时显示应用程序,如何更改组件/ node 位置?

本机方法(JNI)总是编译的吗?

未调用OnBackPressedCallback-Activitiy立即终止

JPA无手术同品种器械可能吗?

JavaFX,GridPane:在GridPane的列中生成元素将保持所有列的宽度

如何判断元素计数并在流的中间抛出异常?

URI构造函数错误?

Java 8 中 ByteBuffer 和 BitSet 的奇怪行为