我有一个事务类,其中有到达日期、离开日期等变量,我不确定如何定义日期数据类型,因此必须根据开始日期对事务信息进行排序。
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;
}
只使用java.time类,不要使用遗留的Date
类。
@Override
public int compareTo( Transaction other )
{
return this.startDate().compareTo( other.startDate()
}
Java附带的Date
类都很糟糕,设计糟糕的人不了解日期时间处理。
如果您只想要一个日期,不需要一天中的时间,也不需要时区的上下文或UTC的偏移量,请使用java。时间LocalDate
。
private LocalDate startDate;
private LocalDate departureDate;
如果类的主要目的是以透明和不变的方式传输数据,请将类定义为记录。编译器隐式地创建构造函数getter,equals
在精度很重要的情况下,如力矩,切勿使用浮点类型,如double
。使用BigDecimal
,准确度高于速度。
为清楚起见,列表通常应以复数形式命名。
Java命名约定就是这样。所以totalCharge
。
public record Transaction
(
Dog dogID ,
LocalDate startDate ,
LocalDate departureDate ,
List<Integer> serviceLevels ,
List<Integer> ratesPerDay ,
BigDecimal totalCharge ,
BigDecimal deposit
) {}
如果您通常希望按开始日期成员字段进行排序,请使用其所需的方法compareTo
来实现可比较
接口。我们通过调用内置于LocalDate
类中的compareTo
方法来实现该方法。
public record Transaction implements Comparable < Transaction >
(
Dog dogID ,
LocalDate startDate ,
LocalDate departureDate ,
List<Integer> serviceLevels ,
List<Integer> ratesPerDay ,
BigDecimal totalCharge ,
BigDecimal deposit
)
{
@Override
public int compareTo( Transaction other )
{
return this.startDate().compareTo( other.startDate()
}
}
问题内容: 我试图根据键中的日期对此HashMap进行排序 我的哈希图: 问题答案: 使用代替。正如已经实现的那样,它将在插入时自动排序。 或者,如果您有一个现有的并且想要基于它创建一个,则将其传递给构造函数: 也可以看看: Java教程-地图实现 Java教程-对象排序
我试图创建一个小应用程序来保存许可证数据,我允许用户输入赎回日期和许可证长度。 我想创建一天的剩余字段,用户可以在其中查看他们在赎回新许可证之前还有多少天。 我用过jxDatepicker 并且有三个组合框,用户可以在其中选择许可证可用的年、月和日数 编辑 我想我让一些人很困惑。或者我不明白这怎么能解决我的问题。我会试着更详细地描述 脚本 用户可以使用该应用程序记录他们的许可证,他们输入许可证兑换
问题内容: 我有下表的人和他们的生日: 而且我不知道如何根据生日离今天有多近来对名字进行排序。因此,对于NOW()= 2011-09-08,排序结果应为: 我正在寻找一个快速的技巧,并不真正在意性能(宠物项目-表将容纳少于1000条记录),但是当然每个建议都会受到赞赏。 问题答案: 这是一种方法: 计算 当前年份 - 出生年份 将得出的年数加上 出生日期 您现在有今年的生日,如果这个日期过去了,再
问题内容: 我正在尝试根据创建日期读取最新的10个文件。 我尝试了此代码,但是它不能用,我的意思是,每当我添加新文件时,它都不会在输出中显示新文件名。 我什至尝试了apache commons io,但这也不起作用(这意味着在该目录中创建新文件时,不显示新文件) 这是我的Apache Commons io版本 问题答案: 尝试翻转比较顺序: 这对我来说仅适用于本地测试。
问题内容: 如何对日期和/或日期时间对象列表进行排序?接受的答案在这里是不是为我工作: 问题答案: 你得到,因为它运行 在原地 ,这意味着它不返回任何东西,但修改列表本身。您只需要呼叫而无需再次分配。 有一个内置函数,该函数返回列表的排序版本-也会执行您想要的操作。