こんな感じで、地道にループで判定する感じでしょうか。
(Java8のストリームならもっとすっきりと書けるのですが。)
lang
1List<String> list = new ArrayList<String>();
2String keyword = "";
3
4boolean containsKeyword = false;
5for (String s : list) {
6 if (s.contains(keyword)) {
7 containsKeyword = true;
8 break;
9 }
10}
11if (containsKeyword) {
12 //
13}
または、メソッドに切り出す手もありますね。
lang
1static boolean containsKeyword(List<String> list, String keyword) {
2 for (String s : list) {
3 if (s.contains(keyword)) {
4 return true;
5 }
6 }
7 return false;
8}
(追記)
ループを使わない方法について。
Java8なら、
lang
1if (list.stream().anyMatch(x -> x.contains(keyword))) {
2
3}
Java8がダメなら、Apache Commons CollectionsのCollectionUtils.existsを使うと同じようなことができます。
それもダメで、どうしても一発で判定したいなら、
lang
1if (String.valueOf(list).contains(keyword) {
2 // do something
3}
という方法があります。list
を文字列にしてしまうのです。
ただし、list
とkeyword
の文字列にスペースとカンマを含まないという前提が無いとダメです。
それに、これはまったくお薦めしない方法です。
どうしても使うなら、リスクを踏まえたうえで、限定的に使うようにしてください。