我正在学习在 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/