考虑我有一个 Arraylist,其中包含产品名称,例如
Dell Inspiron Laptop
Apple iPad
Samsung S4
我想要一个搜索,如果一个搜索S4
,它会返回Samsung S4
。我试图在许多网站上找到答案,但没有得到答案。我使用了 .matches 和 .contains 但没有用。
考虑我有一个 Arraylist,其中包含产品名称,例如
Dell Inspiron Laptop
Apple iPad
Samsung S4
我想要一个搜索,如果一个搜索S4
,它会返回Samsung S4
。我试图在许多网站上找到答案,但没有得到答案。我使用了 .matches 和 .contains 但没有用。
迭代产品名称列表,假设产品名称的变量是name,它是一个 String 类型。
您可以使用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;
}
}
您可以编写一个如下所示的实用程序函数,它扫描列表的内容以查找特定模式。希望这对你有用。
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);
}
}
您可以执行以下操作:
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;
}
首先清理Array的定义。我猜它实际上看起来像这样:
{ "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;
}
}
如果您总是想在第一个空格之后查找字符串,那么您可能不想使用 ArrayList
也许你应该使用一个Map<String, String>
产品,全名例如"S4", "Samsung S4"
然后查找会快得多。