自动完成功能Java

时间:2017-05-30 12:37:42

标签: java autocomplete compilation

我正在为残疾人制作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;
}

有没有办法修改示例,以便它可以用于任何单词?

1 个答案:

答案 0 :(得分:0)

请确保您不只是将单词添加到列表末尾,然后使用binarySearch()。它的文档说明如下

  

列表必须按照自然顺序按升序排序   在制作之前对其元素进行排序(如sort(List)方法)   这个电话。

在此处详细了解:https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#binarySearch(java.util.List,%20T)