Я хочу, чтобы выполнить эту часть моего кода, так как ранее я имел 3, если для соответствующего матча как
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));
}
}
Это не возможно заменить 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, то я хотел бы рассмотреть что-то вроде этого.