どのように私はマップとの一致を使用してコードの私の一部を行うことができますか?

evasi0n:

以前、私はマッチのように対応するために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)
    }

そして私は、私がもし1で、この3試合をenglobeし、対応するマッチャー:)などで自分のマップに置くことができるかどうかを知りたいです:

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));
            }

        }
Amongalen:

単一のものを使用して3「IFS」を交換することはできません。マップに追加0-3要素を有するもたらすブロック「が」第一のケースでは、単一interationにあなたは3,2,1又は0に入ることができることに留意されたいです。あなたが唯一の最高の状態で、マップに最大で1添加元素で得られた「場合」と入力します「場合は、」あなたは、単一にすべての3つの条件をマージする場合。

ただし、すべてのマッチャーのコレクションを作成し、一致すると、それらのそれぞれのために追加実行することができます。それは次のようになります。

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マッチャーのために、それはコードを過度に複雑されるだろうが、あなたは5種類以上のmatcherを持っているならば、私はこのような何かを検討します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=373225&siteId=1
おすすめ