I was wondering if it is possible to find the closest element in a List
for a element that is not there.
For example if we had the valu
It seems like the easiest way is simply to iterate over the sorted list, checking each item.
List<Integer> ints = new ArrayList<>();
ints.add(1);
ints.add(3);
ints.add(6);
ints.add(7);
Collections.sort(ints);
int target = 4;
int nearest = 0;
for (int i : ints)
{
if (i <= target) {
nearest = i;
}
}
System.out.println(nearest);
This outputs the largest item in the list which is less than or equal to the target
.
You need Array.binarySearch
, docs.
Returns: index of the search key, if it is contained in the array; otherwise, (-(insertion point) - 1). The insertion point is defined as the point at which the key would be inserted into the array: the index of the first element greater than the key, or a.length if all elements in the array are less than the specified key.