[英]java milliseconds find closest to current time
我有以下代碼:
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.
查找a.getTime中的哪一個最接近當前時間的最佳方法是什么?
輸出差異:
-143214521
32942394
-132931
-21340
只需保持差異的絕對值 (使用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;
}
}
假設您在其他地方仍需要diff[i]
。 如果不需要,並且只需要a
具有最小差異a
值,則可以更緊湊地編寫它:
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;
}
}
對每個結果進行Math.abs(long)
並使用最低的結果。
(創建一個long[]
類型的數組,將abs()值放入其中,然后使用Arrays.sort()
對其進行Arrays.sort()
)
順便說一句,您可能只想做一次b.getTime()
。
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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.