javaのプログラムで、ある配列の中に特定の文字列が含まれるか検索したいのですが、
一発で調べる方法がないでしょうか?
例えば配列が
{"田中", "山田", "スズキ"}
で検索キーワードが"山田"の場合、
配列に"山田"が含まれるかどうか判定したいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
ベストアンサー
Arrays.binarySearchメソッドを使う方法があります。
第1引数:検索対象の配列、第2引数:検索キーワード
メソッドの戻り値:検索結果がHITした場合は0以上、HITしない場合は0未満。
※検索結果がHITした場合は配列の何番目にあるか示す要素位置を返しますが、配列内に同じワードが複数存在する場合は戻される要素位置は保証されません。
※binarySearchメソッド呼び出し前に必ず対象となる配列をソートしておく必要があります。
サンプルコード
String[] nameList = {"田中", "山田", "スズキ"}; Arrays.sort(nameList);//事前にソートしておく if(Arrays.binarySearch(nameList, "山田") >= 0) { //キーワード"山田"が配列に含まれたらtrue System.out.println("キーワード発見"); }
投稿2014/06/04 07:38
総合スコア195
0
古い質問だけど、ソート→binarySearchがBAというのは釈然としないので
理由:元のデータを変更してしまっているうえ、ソートするための処理時間が余計にかかり、
何回も検索するのでなければbinarySearchの利点が全く生かせないから。
java
1// その1:List化してindexOf 2String[] nameList = {"田中", "山田", "スズキ"}; 3if (Arrays.asList(nameList).contains("山田")) { 4 //"山田"があったときの処理 5}
java
1// その2:Stream.anyMatch 2String[] nameList = {"田中", "山田", "スズキ"}; 3if (Arrays.stream(nameList).anyMatch(s -> s.equals("山田")) { 4 //"山田"があったときの処理 5}
投稿2018/11/21 04:16
編集2018/11/21 19:07総合スコア20675
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
参考情報
- 配列の要素に特定の値が含まれているかチェックする方法
https://java.keicode.com/lang/arrays-contain-check.php
...
java.util.Arrays.asList メソッドで配列からリストを取得し、リストの contains メソッドで要素を含むかどうかの判定をすれば、 特定の要素を含むかどうかの判定が簡単にできます。
...
- Check if a Java Array Contains a Value
https://www.baeldung.com/java-array-contains-value
...
Basic Search
More Efficient Search
Binary Search
...
- How to make sure an array contains certain values?
https://stackoverflow.com/questions/53423456/
- How to determine whether an array contains a particular value in Java?
投稿2018/11/22 20:07
総合スコア22328
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。