gpt4 book ai didi

Java - 在另一个字符串列表中搜索关键字列表

转载 作者:搜寻专家 更新时间:2023-11-01 03:20:36 24 4
gpt4 key购买 nike

我在列表中有一个关键字列表,并且我有来自某个来源的数据,这也是一个列表。

我想查找数据列表中是否存在任何关键字,如果存在,则将这些关键字添加到另一个目标列表中。

例如

关键字列表 = FIRSTNAME, LASTNAME, CURRENCY & FUND

数据列表 = HUSBANDFIRSTNAME、HUSBANDLASTNAME、WIFEFIRSTNAME、SOURCECURRENCY 和 CURRENCYRATE。

在上面的例子中,我想用关键字 FIRSTNAME, LASTNAME & CURRENCY 创建一个目标列表,但是 FUND 不应该出现,因为它不存在于数据列表。

我在下面有一个解决方案,它通过使用两个 for 循环(一个在另一个循环中)并使用 String contains 方法检查,但我想避免两个循环,尤其是一个在另一个循环中。

  for (int i=0; i<dataList.size();i++) {
for (int j=0; j<keywordsList.size();j++) {
if (dataList.get(i).contains(keywordsList.get(j))) {
targetSet.add(keywordsList.get(j));
break;
}
}
}

我的问题还有其他替代解决方案吗?

最佳答案

这是一个使用 regex 的单循环方法。您使用关键字构建模式,然后遍历 dataList 并查看是否可以找到匹配项。

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);
for (String data : dataList) {
Matcher matcher = Pattern.compile(pattern).matcher(data);
if (matcher.find()) {
targetSet.add(matcher.group());
}
}

System.out.println(targetSet);
}

结果:

[CURRENCY, LASTNAME, FIRSTNAME]

关于Java - 在另一个字符串列表中搜索关键字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31531115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com