algorithm - Java - Search keywords list in another string list -


i have list of keywords in list , have data coming source list too.

i find if of keywords exists in data list, if yes add keywords target list.

e.g.

keywords list = firstname, lastname, currency & fund

data list = husbandfirstname, husbandlastname, wifefirstname, sourcecurrency & currencyrate.

from above example, make target list keywords firstname, lastname & currency, fund should not come doesn't exists in data list.

i have solution below works using 2 loops (one inside another) , check string contains method, avoid 2 loops, 1 inside another.

  (int i=0; i<datalist.size();i++) {       (int j=0; j<keywordslist.size();j++) {             if (datalist.get(i).contains(keywordslist.get(j))) {                   targetset.add(keywordslist.get(j));                   break;             }       }     } 

is there other alternate solution problem?

here's 1 loop approach using regex. construct pattern using keywords, , iterate through datalist , see if can find match.

public static void main(string[] args) throws exception {     list<string> keywords = new arraylist(arrays.aslist("firstname", "lastname", "currency", "fund"));     list<string> datalist = new arraylist(arrays.aslist("husbandfirstname", "husbandlastname", "wifefirstname", "sourcecurrency", "currencyrate"));     set<string> targetset = new hashset();      string pattern = string.join("|", keywords);     (string data : datalist) {         matcher matcher = pattern.compile(pattern).matcher(data);         if (matcher.find()) {             targetset.add(matcher.group());         }     }      system.out.println(targetset); } 

results:

[currency, lastname, firstname] 

Comments