当前位置: 首页 > 面试题库 >

获取两个java.util.Date的平均值

班承恩
2023-03-14
问题内容

我有一个java.util.Date对象数组。我试图找到平均值。

例如,如果我有2个日期对象,分别是7:40 AM和7:50 AM。我应该获得7:45 AM的平均日期对象。

我正在考虑的方法效率低下:

  1. 用于遍历所有日期
  2. 找出0000与时间之间的时差
  3. 将时间差加到总计
  4. 除以总数
  5. 将该时间转换为日期对象

有更简单的功能可以做到这一点吗?


问题答案:

好的,从根本上讲,您可以将所有Date对象的“自Unix时代以来的毫秒数”加起来并找到这些对象的平均值。现在,棘手的是避免溢出。选项有:

  1. 除以某个已知数量(例如1000)可避免溢出;这会使准确性降低一个已知的数量(在这种情况下为秒),但是如果您有1000个以上的项目,则它将失败
  2. 将每个毫秒值除以您平均的日期数;这将始终有效,但会导致难以理解的精度降低
  3. 使用BigInteger替代

方法1的示例:

long totalSeconds = 0L;
for (Date date : dates) {
     totalSeconds += date.getTime() / 1000L;
}
long averageSeconds = totalSeconds / dates.size();
Date averageDate = new Date(averageSeconds * 1000L);

方法3的示例:

BigInteger total = BigInteger.ZERO;
for (Date date : dates) {
     total = total.add(BigInteger.valueOf(date.getTime()));
}
BigInteger averageMillis = total.divide(BigInteger.valueOf(dates.size()));
Date averageDate = new Date(averageMillis.longValue());


 类似资料:
  • 问题内容: 我无法获得熊猫列的平均值或均值。有一个数据框。我在下面尝试的任何事情都没有给我该列的平均值 以下返回几个值,而不是一个: 这样: 问题答案: 如果您只想要列的均值,请选择列(这是一个系列),然后调用:

  • 我想计算每条记录的平均等级,然后得到平均等级最高的两条记录,每个类别。 我的表如下所示: 和表,如下所示: 结果将如下所示: 我当前正在使用此SQL查询: 分组确实工作得很好,但是分区时的等级不是按平均等级排序的,所以您只得到每个类别的前2个记录。 要得到我想要达到的结果,最好的查询是什么?

  • 我正在为课堂做一个程序。到目前为止,我已经完成了1-3个,但我不知道如何实现4和5个。我已经被困在这上面一段时间了。必须使用两个类。 null 其他类

  • 问题内容: 我正在尝试学习SQL,所以请耐心等待。我正在使用PostgreSQL 9.3 我想根据日期窗口对一列进行平均。我能够编写窗口函数来完成一个集合,但是我希望能够随着不断增长做到这一点。我的意思是: 我假设有一个比对我要平均的每个范围运行查询更好的方法。任何建议表示赞赏。谢谢你。 编辑 我正在尝试创建均匀分布的垃圾箱,以用于汇总表的值。 我的间隔是: 这里是一个表的列 并且 是并列我想表分

  • 问题内容: 假设我有下表 我想绘制这些值,但是由于我的真实表有成千上万个值,因此我考虑了获取每X行的平均值。我有什么办法可以做到这一点,即每2或4行,如下所示: 另外,是否有任何方法可以根据表中的总行数使此X值动态化?例如,如果我有1000行,则将基于每200行(1000/5)计算平均值,但是如果我有20行,则应基于每4行(20/5)计算平均值。 我知道如何以编程方式执行此操作,但是有什么方法可以

  • 我不能得到熊猫的平均值或平均值。有一个数据框。下面我尝试的东西都没有给我列的平均值 以下内容返回多个值,而不是一个值: 这也是: