Как я могу выполнить свою часть кода, используя карту и соответствие? - PullRequest
1 голос
/ 27 марта 2020

Я хочу выполнить эту часть своего кода, потому что ранее у меня было 3 IF для соответствующего соответствия, например

    if (matcher1.find()) {
        myMap.put(matcher1.group(1), matcher1.group(2)
    }
    if (matcher2.find()) {
        myMap.put(matcher2.group(1), matcher2.group(2)
    }
    if (matcher3.find()) {
        myMap.put(matcher3.group(1), matcher3.group(2)
    }

, и я хочу знать, смогу ли я использовать эти 3 совпадения в одном, если я надену карта с соответствующим соответствием :) вроде:

for (int i = 0; i < result.size(); i++) {
            Matcher matcher1= patternRecordType.matcher(result.get(i));
            Matcher matcher2 = patternCustomerAreaRecordType.matcher(result.get(i));
            Matcher match3 = patternTotal.matcher(result.get(i));

            if (matcher1.find() || matcher2.find() || matcher3.find()) {
                myMap.put(matcherX.group(1), matcherX.group(2));
            }

        }

1 Ответ

1 голос
/ 27 марта 2020

Невозможно заменить ваши 3 "если" одним. Обратите внимание, что в первом случае вы можете ввести 3,2,1 или 0 блоков "если" в одном целом числе, в результате чего на карту будет добавлено 0-3 элемента. Если вы объедините все 3 условия в одно «если», вы введете «если» только в лучшем случае, в результате чего на карту будет добавлено не более 1 добавленного элемента.

Однако вы можете создать коллекцию всех Matchers, а затем выполнить сопоставление и сложение для каждого из них. Это выглядело бы примерно так:

List<Matcher> matchers = new ArrayList<>();
Matcher matcher1= patternRecordType.matcher(result.get(i));
Matcher matcher2 = patternCustomerAreaRecordType.matcher(result.get(i));
Matcher matcher3 = patternTotal.matcher(result.get(i));
matchers.add(matcher1);
matchers.add(matcher2);
matchers.add(matcher3);

for (Matcher matcher : matchers){
    if (matcher.find()) {
        myMap.put(matcher.group(1), matcher.group(2));
    }
}

Только для 3 Matchers было бы слишком сложно код, но если бы у вас было более 5 различных Matchers, я бы рассмотрел что-то вроде этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...