Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中的Arraylist中搜索特定模式_Java_Search_Arraylist_Find_Pattern Matching - Fatal编程技术网

在Java中的Arraylist中搜索特定模式

在Java中的Arraylist中搜索特定模式,java,search,arraylist,find,pattern-matching,Java,Search,Arraylist,Find,Pattern Matching,假设我有一个Arraylist,其中包含产品名称,如 Dell Inspiron Laptop Apple iPad Samsung S4 我想进行一次搜索,如果搜索S4,它将返回Samsung S4。我试图在许多网站上找到答案,但都没有找到。我使用了.matches和.contains,但没有任何用处。您可以编写一个如下的实用程序函数,用于扫描列表中的内容以查找特定的模式。希望这对你的工作 public static void findMatch(List<String> lis

假设我有一个Arraylist,其中包含产品名称,如

Dell Inspiron Laptop
Apple iPad
Samsung S4

我想进行一次搜索,如果搜索
S4
,它将返回
Samsung S4
。我试图在许多网站上找到答案,但都没有找到。我使用了.matches和.contains,但没有任何用处。

您可以编写一个如下的实用程序函数,用于扫描列表中的内容以查找特定的模式。希望这对你的工作

public static void findMatch(List<String> listNames, String searchTerm){

        for(String inName:listNames){
            if(inName!=null)
                if(inName.contains(searchTerm))
                    System.out.println(" Match Found for "+inName);
        }
    }
publicstaticvoidfindmatch(列表名、字符串搜索项){
for(名称中的字符串:listNames){
if(inName!=null)
if(inName.contains(searchTerm))
System.out.println(“为“+inName”找到匹配项);
}
}

迭代产品名称列表,假设产品名称的变量为name,这是一种字符串类型

您可以使用
if(name.contains(value)){
if(name.indexOf(value)!=-1){
检查名称是否包含要搜索的值

请尝试使用以下代码:

import java.util.ArrayList;
import java.util.List;

public class Test {

public static void main(String[] args) {

    List<String> prodNames = new ArrayList<String>();
    prodNames.add("Dell Inspiron Laptop");
    prodNames.add("Apple iPad");
    prodNames.add("Samsung S4");

    // Search S4 and it will print Samsung S4 in Console
    System.out.println(search("S4", prodNames));
}

public static String search(String value, List<String> prodNames) {
    for (String name : prodNames) {
        if (name.contains(value)) {
            return name;
        }
    }

    return null;
}

}
import java.util.ArrayList;
导入java.util.List;
公开课考试{
公共静态void main(字符串[]args){
List prodNames=new ArrayList();
prodNames.add(“戴尔Inspiron笔记本电脑”);
prodNames.add(“苹果iPad”);
产品名称。添加(“三星S4”);
//搜索S4,它将在控制台中打印三星S4
System.out.println(搜索(“S4”,产品名称));
}
公共静态字符串搜索(字符串值、列表名称){
for(字符串名称:prodNames){
if(name.contains(value)){
返回名称;
}
}
返回null;
}
}

您可以执行以下操作:

public List<String> matches (List<String> dataList, String matchStr){
  List<String> result = new ArrayList<String>();
  if (matchStr != null) {
    matchStr = matchStr.toLowerCase();
    for(String d : dataList){
      if (d.toLowerCase().contains(matchStr)) {
        result.add(d);
      }
    }
  }
  return result;
}
公共列表匹配(列表数据列表、字符串匹配str){
列表结果=新建ArrayList();
if(matchStr!=null){
matchStr=matchStr.toLowerCase();
for(字符串d:数据列表){
if(d.toLowerCase().contains(matchStr)){
结果.添加(d);
}
}
}
返回结果;
}

首先清理数组的定义。我猜它实际上是这样的:

{ "Dell Inspiron", "Apple iPad", "Samsung S4" }
然后在IDE中运行以下命令:

import java.util.ArrayList;
import java.util.List;

class TestSearching {
    public static void main(String args[]) {
        List<String> products = new ArrayList<String>();
        products.add("Dell Inspiron");
        products.add("Apple iPad");
        products.add("Samsung S4");

        System.out.println("Matches to S4 : " + findMatches(products,"S4"));
    }

    public static List<String> findMatches(List<String> products, String searchTerm) {
        List<String> result = new ArrayList<String>();
        for (String product : products) {
            if ( product.contains(searchTerm) ) result.add(product);
        }
        return result;
    }
}
import java.util.ArrayList;
导入java.util.List;
类测试搜索{
公共静态void main(字符串参数[]){
列表产品=新的ArrayList();
产品。添加(“戴尔Inspiron”);
产品。添加(“苹果iPad”);
产品。添加(“三星S4”);
System.out.println(“与S4的匹配:+findMatches(产品,“S4”));
}
公共静态列表findMatches(列表产品、字符串搜索术语){
列表结果=新建ArrayList();
用于(字符串产品:产品){
if(product.contains(searchTerm))result.add(product);
}
返回结果;
}
}

如果您总是想在第一个空格后查找字符串,那么可能不想使用ArrayList

也许您应该使用产品的
地图
,全名,例如
“S4”、“三星S4”

然后查找会快得多。

发布您尝试过的代码。