只要保持(使用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
值與最小的區別,你可以更緊湊寫:
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;
}
}
此外,您可以擺脫'長[]數組`和公正記錄迄今爲止計算的最低值。 – 2010-11-29 08:36:14
當然,但我的方式可能更容易爲初學者。 – 2010-11-29 08:37:47
或者你可以創建一個'Long'類型的列表並使用`Collections.min`。 – dogbane 2010-11-29 08:45:11