gpt4 book ai didi

java - 在 Android 中的 List 中快速搜索的方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:05 26 4
gpt4 key购买 nike

问题描述


我有一个字符串列表,其中包含 8000 个项目。包含列表的项目如下所述。

List<String> stringList = new List<String>(8000);
stringList.add("this is first string.");
stringList.add("text which I want to search.");
stringList.add("separated string items.");
....

所以你可以看到我列表中的每个项目都是一个超过三个单词的句子。

问题。


外部用户可以通过以下方式搜索列表。例如,用户想要搜索单词“first”,搜索算法必须以这种方式工作。

搜索算法必须遍历列表并将单词“first”与句子中的所有单词进行比较,如果句子中的任何单词以“first”开头,它必须return that sentence "。所以为了实现这个算法我写了下面的代码,你可以看下面的代码。

我实现的算法运行速度很慢,所以我想知道是否有更快的算法或者如何让我的算法更快?

代码示例


Iterator<ContactInformation> stringListIter  = stringList .iterator();
while (stringListIter.hasNext()) {

String currItem = stringListIter.next();
String[] separatedStr = currItem.split(" ");

for(int i=0; i<separatedStr.lenght; ++i)
if(separatedStr[i].startsWith(textToFind))
retList.add(currItem);
}

最佳答案

您可以使用 String#contains方法连同 String#startsWith而不是拆分您的 String 并搜索每个标记。

String currItem = stringListIter.next();
if(currItem.startsWith(textToFind.concat(space))){
retList.add(currItem);
} else if(currItem.endsWith(space.concat(textToFind))){
retList.add(currItem);
} else if(currItem.contains(space.concat(textToFind).concat(space))){
retList.add(currItem);
} else if(currItem.equals(textToFind)){
retList.add(currItem);
}

First if - 检查它是否是第一个单词。

第二个 if - 检查它是否是最后一个单词。

第三个 if - 检查它是否在中间的某个地方。

Last if - 检查它是否是唯一的单词。

关于java - 在 Android 中的 List<String> 中快速搜索的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16332616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com