java限制只能修改一次订单_拥有可以动态更改订单的Java Comparator是否可以?

我有一组带时间戳的值,我想放在一个有序的集合中.

public class TimedValue {

public Date time;

public double value;

public TimedValue(Date time, double value) {

this.time = time;

this.value = value;

}

}

用于对此集合进行排序的业务逻辑表示,值必须按降序排序,除非它比最新值早7天以上.

所以作为测试,我想出了以下代码……

DateFormat dateFormatter = new SimpleDateFormat("MM/dd/yyyy");

TreeSet mySet = new TreeSet(new DateAwareComparator());

mySet.add(new TimedValue(dateFormatter.parse("01/01/2009"), 4.0 )); // too old

mySet.add(new TimedValue(dateFormatter.parse("01/03/2009"), 3.0)); // Most relevant

mySet.add(new TimedValue(dateFormatter.parse("01/09/2009"), 2.0));

如您所见,最初第一个值比第二个值更相关,但是一旦将最终值添加到集合中,第一个值已过期且应该是最不相关的.

我的初步测试表明这应该有效…… TreeSet会在添加更多值时动态重新排序整个列表.

但即使我看到它,我也不确定我是否相信它.

在添加每个元素时,排序的集合是否会重新排序整个集合?有没有以这种方式使用排序集合(即性能)的问题?在添加所有值后手动对列表进行排序会更好(我猜它会是这样)?

跟进:

尽可能多的(甚至在某种程度上)怀疑,排序的集合不支持这种“动态重新排序”的方式.我相信我的初步测试是“偶然”工作.随着我在集合中添加更多元素,“订单”迅速崩溃.感谢所有出色的回复,我重构了我的代码以使用许多人建议的方法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值