我正在为残疾人制作Displaykeyboard,我正在考虑添加自动单词完成功能。 我从oracle中找到了一个可以正常工作的例子。它是另一个例子:TextAreaDemo。问题是我真的不理解搜索算法,问题是当我向arraylist添加一些单词时,搜索算法停止正常工作。
String prefix = content.substring(w + 1).toLowerCase();
int n = Collections.binarySearch(words, prefix);
if (n < 0 && -n <= words.size()) {
String match = words.get(-n - 1);
if (match.startsWith(prefix)) {
// A completion is found
String completion = match.substring(pos - w);
// We cannot modify Document from within notification,
// so we submit a task that does the change later
SwingUtilities.invokeLater(
new CompletionTask(completion, pos + 1));
}
} else {
// Nothing found
mode = Mode.INSERT;
}
有没有办法修改示例,以便它可以用于任何单词?
答案 0 :(得分:0)
请确保您不只是将单词添加到列表末尾,然后使用binarySearch()
。它的文档说明如下
列表必须按照自然顺序按升序排序 在制作之前对其元素进行排序(如sort(List)方法) 这个电话。