java毫秒查找最接近当前时间的时间
我有以下代码:java毫秒查找最接近当前时间的时间,java,Java,我有以下代码: for(int i=0; i<a.length; i++){ diff[i] = a.getTime() - b.getTime(); } a.getTime() = time in array. b.getTime() = current time on computer. 对每个结果都执行此操作,并使用最低的结果 (创建一个类型为long[]的数组,将abs()值放入其中,然后使用Arrays.sort()对其进行排序) 顺便说一句,您可能只想执行一次b.g
for(int i=0; i<a.length; i++){
diff[i] = a.getTime() - b.getTime();
}
a.getTime() = time in array.
b.getTime() = current time on computer.
对每个结果都执行此操作,并使用最低的结果
(创建一个类型为long[]
的数组,将abs()值放入其中,然后使用Arrays.sort()对其进行排序)
顺便说一句,您可能只想执行一次b.getTime()
。对每个结果执行操作,并使用最低的结果
(创建一个类型为long[]
的数组,将abs()值放入其中,然后使用Arrays.sort()对其进行排序)
顺便说一句,您可能只想执行一次b.getTime()
。只需保留差异的绝对值(使用Math.abs
),并跟踪到目前为止看到的最小值以及发生差异的索引
例如:
long currentTime = b.getTime(); // Only call once, to be consistent
long minAbsDiff = Long.MAX_VALUE;
int minIndex = -1;
for(int i=0; i < a.length; i++) {
diff[i] = a[i].getTime() - currentTime;
long abs = Math.abs(diff[i]);
if (abs < minAbsDiff) {
minAbsDiff = abs;
minIndex = i;
}
}
只需保留差异的绝对值(使用Math.abs
),并跟踪到目前为止看到的最小值以及发生差异的索引
例如:
long currentTime = b.getTime(); // Only call once, to be consistent
long minAbsDiff = Long.MAX_VALUE;
int minIndex = -1;
for(int i=0; i < a.length; i++) {
diff[i] = a[i].getTime() - currentTime;
long abs = Math.abs(diff[i]);
if (abs < minAbsDiff) {
minAbsDiff = abs;
minIndex = i;
}
}
long min=long.MAX\u值;
长电流=b.getTime();
int指数=-1;
对于(int i=0;ilong min=long.MAX\u值;
长电流=b.getTime();
int指数=-1;
对于(int i=0;i),您可以去掉long[]
数组,只需跟踪到目前为止计算的最低值。当然,但对于初学者来说,我的方法可能更容易。或者您可以创建一个类型列表Long
并使用Collections.min
。当然,这更有用,但也更消耗内存。如果您只需要基本操作,为什么要创建对象呢你可以去掉long[]
数组,只需跟踪到目前为止计算的最低值。当然,但对于初学者来说,我的方法可能更容易。或者你可以创建一个类型列表Long
并使用Collections.min
。当然,这更有用,但也更消耗内存。如果只需要基本操作,为什么要创建对象?叹气。你的答案很漂亮(+1)。但至少我发现了一个拼写错误:-)它很长。MAX_VALUE
@s.P.Floyd-seanizer:Doh!修复了,谢谢。我的脑子一半在C#)现在你已经修复了一半的拼写错误:-)@s.P.Floyd-seanizer:Gah!完成:)叹气。你的答案很漂亮(+1)。但至少我发现了一个打字错误。:-)它是长的。最大值@s.P.Floyd-seanizer:Doh!修好了,谢谢。我有一半的心思在C上)现在你已经修复了一半的打字错误:-)@S.P.Floyd-seanizer:Gah!完成:)
long currentTime = b.getTime(); // Only call once, to be consistent
long minAbsDiff = Long.MAX_VALUE;
WhateverType minContainer = null;
for (WhateverType x : a) {
long abs = Math.abs(x.getTime() - currentTime);
if (abs < minAbsDiff) {
minAbsDiff = abs;
minContainer = x;
}
}
long min = Long.MAX_VALUE;
long current = b.getTime();
int index = -1;
for(int i=0; i<a.length; i++) {
long diff = Math.abs(current - a.getTime());
if(diff < min) {
min = diff;
index = i;
}
}