我有一个java.util.Date对象的数组.我想找到平均值.
例如,如果我在上午7:40和上午7:50有2个日期对象.我应该得到一个平均日期对象上午7:45.
我想的方法效率低下:
这样做有更简单的功能吗?
Jon*_*eet 20
从根本上说,你可以将所有Date对象的"自Unix时代以来的毫秒"加起来并找到它们的平均值.现在棘手的一点是避免溢出.选项包括:
BigInteger改用方法1的一个例子:
long totalSeconds = 0L;
for (Date date : dates) {
totalSeconds += date.getTime() / 1000L;
}
long averageSeconds = totalSeconds / dates.size();
Date averageDate = new Date(averageSeconds * 1000L);
Run Code Online (Sandbox Code Playgroud)
方法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());
Run Code Online (Sandbox Code Playgroud)