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
Post a Comment