java - Java中的字符串二分查找

标签 java binary-search

我正在学习在 Java 中使用二分搜索。在整数列表中,它返回预期的索引,但在 char 或字符串列表(代码示例)中,它返回负索引,这不是预期的(索引 = -4)。

List<String> str = new ArrayList<>();
str.add("Hey");
str.add("Hi");
str.add("Bye");
int index = Collections.binarySearch(str,"Hi");
System.out.println(index);

最佳答案

二分查找的前提是:底层数据必须排序

因此,首先对该列表进行排序

然后您要检查该方法返回的索引是否在 0 和列表的 size() 之间。期望可以在列表中找到任何字符串并返回非零索引,这有点天真。

除此之外;这里的真正答案是:不要盲目地使用内置功能。阅读其 javadoc 首先了解此方法正在做什么,例如:它将返回给您什么值!

关于java - Java中的字符串二分查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43975770/

相关文章:

Java:通过引用集合克隆任意集合

java - 通过 Keycloak 保护 Spring Boot 中的单个资源

java - 试图证明二分查找的复杂度是O(log(n))

java - 来自已排序数组的 X 的 floor 和 ceil

c - 二分查找修改

java - 来自 java 桌面应用程序的 Web 服务

java - 如何在 grails 2.0.3 中对服务进行单元测试?

java - 通过映射将2个列表合并为1个列表

algorithm - 二分搜索+排序与线性搜索(大O)

C 二分和线性搜索