这个问题可能已得到解答。我找不到它。
在Java Collections中,我总是使用Collections.sort(coll),然后搜索。我的问题是,集合总是会执行二进制搜索还是内部决定。集合是否存储任何标识符以在线性搜索和二进制搜索之间进行决定。
答案 0 :(得分:3)
当您查看Collections.sort(coll)
的Java 8源代码时,它使用了Arrays.sort(Object[] a)
方法。如果您没有将java.util.Arrays.useLegacyMergeSort
作为系统属性传递。否则,它将使用旧式合并排序。
Arrays.sort(Object[] a)
使用TimSort,这是一种战略算法,可根据给定数组的顺序和大小选择插入排序或合并排序。您可以在以下链接中找到详细信息: