如何声明日期类型的变量并根据日期进行排序?



我有一个交易类,其中有到达日期、出发日期等变量,我不确定如何定义日期数据类型,因此交易信息必须根据开始日期进行排序。我想以明确的方式向全班提供日期。例如,我想给出 5 个日期并对其进行排序。你能告诉我,怎么做吗?

public class Transaction implements Comparable<Transaction> 
{
private Dog dogID;
private Date startDate;
private Date departureDate;
private List<Integer> serviceLevel = Arrays.asList(1,2,3);
private List<Integer> ratePerDay = Arrays.asList(89,129,149);
private double totalcharge;
private double deposit; 
}

tl;博士

只使用java.time类,切勿使用旧类Date类。

实现Comparable接口所需的一种方法。

@Override
public int compareTo( Transaction other )
{
return this.startDate().compareTo( other.startDate()
}

Java 中包含的两个Date类都很糟糕,由不了解日期时间处理的人设计得很糟糕。

如果只需要日期,而不要使用一天中的时间,并且没有时区上下文或 UTC 偏移量,请使用java.time.LocalDate

private LocalDate startDate;
private LocalDate departureDate;

如果类的主要目的是透明且不可变地传达数据,请将该类定义为记录。编译器隐式创建构造函数、getter、equals&hashCodetoString

切勿使用像double这样的浮点类型,因为精度很重要,例如时刻。使用准确性胜过速度的BigDecimal

为清楚起见,列表通常应以复数形式命名。

Java 命名约定是 camelCase。所以totalCharge.

public record Transaction
(
Dog dogID , 
LocalDate startDate , 
LocalDate departureDate , 
List<Integer> serviceLevels , 
List<BigDecimal> ratesPerDay , 
BigDecimal totalCharge , 
BigDecimal deposit
) {}

如果要通常按开始日期成员字段进行排序,请使用一个必需的方法实现Comparable接口compareTo。我们通过调用LocalDate类中内置的compareTo方法来实现该方法。

public record Transaction implements Comparable < Transaction > 
(
Dog dogID , 
LocalDate startDate , 
LocalDate departureDate , 
List<Integer> serviceLevels , 
List<BigDecimal> ratesPerDay , 
BigDecimal totalCharge , 
BigDecimal deposit
) 
{
@Override
public int compareTo( Transaction other )
{
return this.startDate().compareTo( other.startDate()
}
}

相关内容

  • 没有找到相关文章

最新更新