[英]Search for the smallest element in a list after some value
考虑整数<1,5,10>
的列表(假定以升序排序)。
给定一个整数,例如key = 6
,是否有一种实用程序方法返回key
之后的最小元素(在这种情况下为10)?
注意:遍历列表中的元素并将其与key
进行比较是一种显而易见的方法,但是我只是想知道是否存在实用工具来执行相同的操作:)
二进制搜索有效,但是如果实际上您拥有一组排序的值,那么最自然的选择是使用SortedSet
(甚至更好的NavigableSet
)代替List
,而不是List
。
这是一个示例用法:
NavigableSet<Integer> nums = new TreeSet<Integer>(
Arrays.asList(9,1,5,7,3)
);
System.out.println(nums); // "[1, 3, 5, 7, 9]"
System.out.println(nums.first()); // "1"
System.out.println(nums.last()); // "9"
System.out.println(nums.higher(3)); // "5"
System.out.println(nums.lower(8)); // "7"
System.out.println(nums.subSet(2,8)); // "[3, 5, 7]"
System.out.println(nums.subSet(1, true, 5, true)); // "[1, 3, 5]"
还有NavigableMap
对应项,在某些情况下可能会更加有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.