次のような製品名を保持する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であると想定します。
または を使用して、名前に検索する値が含まれているかどうかを確認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;
}
まず、配列の定義をクリーンアップします。実際には次のようになっていると思います。
{ "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;
}
}