我对二分查找有疑问。我在那里我使用这个搜索列表中的字符串与前缀strting一个ArrayList:Java二进制搜索更多的一个结果?
if(prefix.length()>1){
prefixlow=prefix.toLowerCase();
int n = Collections.binarySearch(words, prefixlow);
if (n < 0 && -n <= words.size()) {
String match = words.get(-n - 1);
if (match.startsWith(prefixlow)) {
// A completion is found
completion = match.substring(0+prefix.length());
keyboardwindow.jTextArea1.setText(prefix+completion);
}
}
else{keyboardwindow.jTextArea1.setText(prefix);}
}
现在,这只是寻找我一个结果。下一步是从列表中获得所有从这个前缀开始的单词,而不仅仅是一个单词。所以第一个问题是,它总是会找到以前缀开头的第一个单词吗?因为我认为它给了你一个随机的字符串,只是从前缀开始......所以任何tipps我如何获得以我的前缀开始的字符串的起始位置和结束位置?
这种解决方案我收到此错误按摩java.lang.IndexOutOfBoundsException:指数:24,大小:24编辑:哦确定的,因为我的洞名单开始的前缀,但是,所以我需要停止循环的时候,他是在最后一个元素 – QFireball
oh thx为此 – QFireball