Java 如何使用map和match执行我的代码部分?

Java 如何使用map和match执行我的代码部分?,java,regex,dictionary,Java,Regex,Dictionary,我想执行代码的这一部分,因为之前我有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.pu

我想执行代码的这一部分,因为之前我有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)
    }
我想知道我是否能在一个if中找到这3个匹配项,并用相应的匹配器放在我的地图上:)比如:

for(int i=0;i
无法用一个“如果”替换您的3个“如果”。请注意,在第一种情况下,在单个交互中,可以输入3、2、1或0“if”块,从而将0-3个元素添加到贴图中。如果将所有3个条件合并为一个“如果”,则最多只能输入一个“如果”,从而在映射中最多添加1个元素

但是,您可以创建所有匹配器的集合,然后为每个匹配器执行匹配和添加。它看起来像这样:

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));
    }
}
List matchers=new ArrayList();
Matcher matcher1=patternRecordType.Matcher(result.get(i));
Matcher matcher2=patternCustomerReareCordType.Matcher(result.get(i));
Matcher matcher3=patternTotal.Matcher(result.get(i));
matchers.add(matcher1);
matchers.add(matcher2);
matchers.add(matcher3);
用于(匹配器匹配器:匹配器){
if(matcher.find()){
myMap.put(matcher.group(1),matcher.group(2));
}
}

对于只有3个匹配者来说,这会使代码过于复杂,但是如果你有超过5个不同的匹配者,那么我会考虑这样的事情。

我不理解这个问题,你能再详细说明一下吗?
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));
    }
}