Нужна логика c для получения элементов - PullRequest
0 голосов
/ 27 апреля 2020

Я новичок в программировании, и мне нужен лог c ниже

Сервис содержит (Это список)

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       
 }

1 Ответ

0 голосов
/ 27 апреля 2020

Предварительно, я бы предложил смоделировать это не только строкой, но и объектом, который содержит некоторые методы получения для некоторого идентификатора.

Я знаю, что сделаю предположение, что содержимое карты всегда соответствует регулярному выражению

\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
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...