自动完成函数Java

自动完成函数Java,java,autocomplete,compilation,Java,Autocomplete,Compilation,我正在为残疾人设计一个显示键盘,我正在考虑添加一个自动完成单词的功能。 我找到了一个oracle的例子,它可以根据我的需要工作。这是另一个例子:TextAreaDemo。问题是我不太了解搜索算法,而问题是当我在arraylist中添加一些单词时,搜索算法就会停止正常工作 String prefix = content.substring(w + 1).toLowerCase(); int n = Collections.binarySearch(words, prefix); if (n <

我正在为残疾人设计一个显示键盘,我正在考虑添加一个自动完成单词的功能。 我找到了一个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;
}
String prefix=content.substring(w+1).toLowerCase();
int n=Collections.binarySearch(单词、前缀);

如果(n<0&&n确保您不仅仅是将单词添加到列表的末尾,然后使用
binarySearch()

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


阅读更多相关信息:

此处指向示例
binarySearch
的链接依赖于排序输入,因此我猜您在添加单词后不会再次对列表进行排序?列表将是静态的,因此实际上不需要这样做,所以您根本不进行排序?或者您是否按排序顺序添加单词?没有排序列表是一个错误,因此您至少应该st解决了这个问题。但是你还没有发布一个,所以没有人可以确定错误在哪里。哦,天啊,这就是问题所在。binarySort能够与许多单词一起使用吗?当然。单词越多,找到匹配项所需的时间就越长,但它肯定足够快,适合你使用它的目的