Java二进制搜索算法后代列表

时间:2011-10-26 20:29:56

标签: java list

在Java Collections.binarysearch()适用于按升序排序的排序列表。有没有一种简单的方法可以对具有降序的列表进行二进制搜索?

更改列表不是一个选项

2 个答案:

答案 0 :(得分:5)

有一个overload of binarySearch()接受自定义Comparator。称之为一个,传递一个反转普通比较结果的比较器。

例如,如果您有List<Integer>,请致电:

int index = Collections.binarySearch<Integer>(
             intList, Integer.valueOf(1), Collections.reverseOrder());

(感谢@MarkPeters使用`Collections.reverseOrder()。)

答案 1 :(得分:3)

使用GuavaLists#reverse()创建列表的反向视图,并将视图传递到Collections#binarySearch()。原始列表中的索引是列表的长度减去binarySearch()返回的值。