Предварительно, я бы предложил смоделировать это не только строкой, но и объектом, который содержит некоторые методы получения для некоторого идентификатора.
Я знаю, что сделаю предположение, что содержимое карты всегда соответствует регулярному выражению
\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
}
}
}
}