我是编程新手,下面需要一个逻辑
服务包含(这是一个列表)
XX04|N|abc.02
XX04|N|abc.03
XX04|N|xyz.03
XX04|N|xyz.02
XX04|N|deg.01
entry Map contains
abc.def.01-abc.02
abc.def.01-xyz.02
abc.max.01-xyz.01
for(String test: entry.getValue()){
if(Service.contains(test){
//Logic here to take only those services(Like
XX04|N|abc.02
XX04|N|xyz.02
XX04|N|deg.01
}
最佳答案
预先,我建议不仅使用字符串,而且还使用包含某些ID的getter方法的对象来对此建模。
我知道将假设地图的内容始终与正则表达式匹配
\w*\.\w*\.\d*-\w*\.\d*
并且服务始终与
\w*\d*\|N\|[A-z0-9.]*
然后,您可以使用正则表达式使用命名的捕获组来提取字符串的id部分。
Pattern servicePattern = Pattern.compile("\\w*\\d*\\|N\\|(?<id>\\w*\\.\\d*)");
Pattern entryPattern = Pattern.compile("\\w*\\.\\w*\\.\\d*-(?<id>\\w*\\.\\d*)");
for (String name : entry.getValue()) {
Matcher entryMatcher = entryPattern.matcher(name);
Assume.true(entryMatcher.matches());
String id = entryMatcher.group("id");
for (String serviceName : Service) {
Matcher serviceMatcher = servicePattern.matcher();
if (serviceMatcher.matches()) {
if (id.equals(serviceMatcher.group("id"))) {
// do what ever you want with the service
}
}
}
}