java限制只能修改一次订单_拥有可以动态更改订单的Java Comparator是否可以?
发布日期:2021-06-24 15:50:53 浏览次数:4 分类:技术文章

本文共 895 字,大约阅读时间需要 2 分钟。

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

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会在添加更多值时动态重新排序整个列表.

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

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

跟进:

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

转载地址:https://blog.csdn.net/weixin_33642922/article/details/114498924 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:cephfs java api_CephFS 使用
下一篇:java 拼图游戏_Java 拼图游戏

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月23日 21时40分12秒