java - 从java中排序的ArrayList中的特定字符串开始搜索字符串列表

标签 java string search

这里我有一个英语单词表:(例如)

account

angel

apple

application

black

...

我想搜索以特定字符串开头的字符串。例如:“ap”的结果应该是 { apple, application }。

可以通过基于序列搜索的解决方案轻松实现返回一组相应的字符串。但仍然有比序列搜索更强的算法,但它们只返回一个字符串。那么,有什么理想的方法可以比基于序列搜索的方法更快地从 ArrayList 返回一组相应的字符串吗?

谢谢!

最佳答案

标准 API 已经有 binary search这样就可以做到这一点:

    int index = Collections.binarySearch(list, key);
    if (index < 0) {
        index = -(index + 1);
    }
    List<String> result = new ArrayList<String>();
    while (index < list.size()) {
        String s = list.get(index);
        if (s.startsWith(key)) {
            result.add(s);
        }
        else {
            break;
        }
        index++;
    }

关于java - 从java中排序的ArrayList中的特定字符串开始搜索字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21113114/

相关文章:

java - Nimbus 外观和感觉 JTabbedPane 选项卡背景颜色

java - 我该如何修复这个 "not quite synchronized"消费者生产者示例

python - 将不存在的路径分配给字符串时出现类型错误

python - 从字符串中读取字节作为 float

php - 在 PHP 中高效的平面文件搜索

php - 在文件夹/目录中搜索特定文件扩展名 (PHP)

c# - 如何完全检查一个字符串是否等于 c# 中字符串中包含的单词?

java.lang.NoSuchMethodException : setHomeActionContentDescription [int]? 异常

java - 为什么屏幕上显示的是异常而不是错误页面?

java - 如何检查字符串是否包含大写java