java - 如何在数组中搜索字符串的一部分?

标签 java string sorting search string-comparison

我有一个 arraylist<string>的话。我使用 Collections.sort(wordsList); 对其进行排序

我将这个数组用于自动建议下拉框,这样当用户输入字母时,他们会得到一个与他们输入的内容相似的建议列表。

我如何搜索此数组以查找字符串前缀,假设用户键入“mount”并且数组包含单词“mountain”,我如何搜索此数组并返回相似的值。

到目前为止,这是我的代码:

public List<Interface> returnSuggestedList(String prefix) {
    String tempPrefix = prefix;
    suggestedPhrases.clear();
    //suggestedPhrases = new ArrayList<Interface>();
    //Vector<String> list = new Vector<String>();
    //List<Interface> interfaceList = new ArrayList<Interface>();
    Collections.sort(wordsList);
    System.out.println("Sorted Vector contains : " + wordsList);
    int i = 0;
    while (i != wordsList.size()) {
        int index = Collections.binarySearch(wordsList, prefix);
        String tempArrayString = wordsList.get(index).toString();
        if (tempArrayString.toLowerCase().startsWith(prefix.toLowerCase())) {
            ItemInterface itemInt = new Item(tempArrayString);
            suggestedPhrases.add(itemInt);
            System.out.println(suggestedPhrases.get(i).toString());
            System.out.println("Element found at : " + index);
        }
        i++;
    }
    return suggestedPhrases;
}

最佳答案

最基本的方法是

List<String> result = new ArrayList<String>();
for(String str: words){
  if(str.contains(keyword){
    result.add(str);
  }
}

你可以改进这个版本,如果你只关心 startWith 而不是 contains 那么你可以在 HashMap 中分配单词,你会缩小搜索范围

关于java - 如何在数组中搜索字符串的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7672922/

相关文章:

ios - 如何使用 Swift 将 CKRecord 保存到具有多种类型信息的 CloudKit

Java 8 Collections.sort(有时)不对 JPA 返回列表进行排序

asp.net - 在计算字段上对 Gridview 进行排序

java - 没有可检查的 float 操作按钮

java - 关于数组问题(查找重复项)的问题

java - 第一人称相机胶卷

c - 在读取文本文件之前为二维字符串数组分配空间

c# - 根据字符串位置对字符串数组进行排序 (C#)

mysql - Order By 不使用 Top MS SQL 查询

java - JOptionPane 按字面意思显示一些 HTML 标签