java– 改进数组中的搜索

java– 改进数组中的搜索,第1张

概述我是Android和Java的新手所以请你好:)我的应用程序中有一个EditText,用于在String []中搜索特定的字符串我的代码运行良好,但不是我想要的:ArrayList<String> allProd = new ArrayList<String>; ArrayList<String> allProd_sort

我是Android和Java的新手所以请你好:)

我的应用程序中有一个EditText,用于在String []中搜索特定的字符串

我的代码运行良好,但不是我想要的:

ArrayList

此代码生成以下结果:

如果我搜索“table is”=> allProd_sort将[该表为棕色]

但如果我搜索“table brown”=> allProd_sort将为空但我想[表是棕色的]

我怎么能改善这个?

谢谢大家

最佳答案好的 – 第一次优化:如果您的初始要求(Searchtext> = 3)为真,则只进入循环:

@OverrIDepublic voID onTextChanged(CharSequence charSequence,int i3) {  int textLength = inputSearch.getText().length();  if (textLength < 3) return;  String[] searchPattern = inputSearch.getText().toString().tolowerCase().split("\s+");  for (int y = 0; y< allProdString.length; y++) {    if(textLength <= allProdString[y].length()) {       if (matchSearch(allProdString[y].tolowerCase(),searchPattern)) {           allProd_sort.add(allProdString[y]);       }    } }

如果您只想匹配行,其中所有单词都包含在相同的序列中,您可以简单地创建一个正则表达式,如Tim B所说.

但是如果你还想匹配包含任何搜索词的字符串“brown table” – > [表是棕色的]然后你需要一个小循环:

public boolean matchSearch(String s,String[] searches) {    for (String search : searches) {        if (!s.contains(search) return false; // If the word is not in the string FALSE    }    return true; // If all words were found in the string,it is a match!}

为了使这更清楚 – >棕色.*表只会匹配表格来自棕色的字符串……我认为你不能轻易创建一个有效的RegEx来检查每个单词在字符串中的任何位置是否至少有一次… 总结

以上是内存溢出为你收集整理的java – 改进数组中的搜索全部内容,希望文章能够帮你解决java – 改进数组中的搜索所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1140408.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)