【发布时间】:2021-02-24 07:41:47
【问题描述】:
我想知道如何编写一个简单的 java 方法,在已排序的 Integer 列表中找到与给定值最接近的 Integer。
这是我的第一次尝试:
public class Closest {
private static List<Integer> integers = new ArrayList<Integer>();
static {
for (int i = 0; i <= 10; i++) {
integers.add(Integer.valueOf(i * 10));
}
}
public static void main(String[] args) {
Integer closest = null;
Integer arg = Integer.valueOf(args[0]);
int index = Collections.binarySearch(
integers, arg);
if (index < 0) /*arg doesn't exist in integers*/ {
index = -index - 1;
if (index == integers.size()) {
closest = integers.get(index - 1);
} else if (index == 0) {
closest = integers.get(0);
} else {
int previousDate = integers.get(index - 1);
int nextDate = integers.get(index);
if (arg - previousDate < nextDate - arg) {
closest = previousDate;
} else {
closest = nextDate;
}
}
} else /*arg exists in integers*/ {
closest = integers.get(index);
}
System.out.println("The closest Integer to " + arg + " in " + integers
+ " is " + closest);
}
}
您如何看待这个解决方案?我确信有一种更清洁的方式来完成这项工作。
也许这种方法存在于 Java 库中的某个地方,我错过了它?
【问题讨论】:
标签: java