在Java中的Arraylist中搜索特定模式
假设我有一个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
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”
然后查找会快得多。发布您尝试过的代码。