2017-10-24 12 views
1

15個以上の文字列リストがあり、各リストにはいくつかの異なるコードが含まれています。各リストには、1つの特定のタイプのコードが含まれています。 私は1つの入力コードを持ち、入力コードがどのリストに属しているかを調べ、その結果に基づいて特定の1つのStringを返す必要があります。私はそれをするためにifを使っています。以下はリストのリストで文字列を検索

private static String getCodeType(String inputCode) { 

    if (MyClass.getCodeTypeOneList().contains(inputCode)) { 
     return "CodeType_A"; 
    } else if (MyClass.getCodeTypeTwoList().contains(inputCode)) { 
     return "CodeType_B"; 
    } else if (MyClass.getCodeTypeThreeList().contains(inputCode)) { 
     return "CodeType_C"; 
    } else if (MyClass.getCodeTypeFourList().contains(inputCode)) { 
     return "CodeType_D"; 
    } else if (MyClass.getCodeTypeFiveList().contains(inputCode)) { 
     "CodeType_E; 
    } else if (MyClass.getCodeTypeixList().contains(inputCode)) { 
     return "CodeType_F"; 
    } else if (MyClass.getWithDrawalCodeTypeList().contains(inputCode)) { 
     return "CodeType_G"; 
    } 
    // similar 10 more if conditions 
    else { 
     return null; 
    } 
    } 

各リストは以下のようなものですサンプルコードです: パブリック静的リストcodeTypeOneList =新しいArrayListを();

public static final List<String> getCodeTypeOneList() { 

    codeTypeOneList.add("AFLS"); 
    codeTypeOneList.add("EAFP"); 
    codeTypeOneList.add("ZDTC"); 
    codeTypeOneList.add("ZFTC"); 
    codeTypeOneList.add("ATCO"); 
    return codeTypeOneList; 
} 

(他のコードの種類について同様のリスト)

これを達成するための任意のより良い方法はありますか?おかげで1回のステップとして

+0

Java 8ストリームを使用して、1つのリストにまとめてもかまいません。 –

+0

私たちはJava 7を使用していますが、Java 8は使用できません。 –

答えて

0

、マップの構築:(あなたがわからないか、リストの要素が複数のリストに発生していないことを確認する必要があり

Map<String, String> codeTypeMap = new HashMap<>(); 
for (String key : getCodeTypeOneList()) { 
    codeTypeMap.put(key, "CodeType_A"); 
} 
for (String key : getCodeTypeTwoList()) { 
    codeTypeMap.put(key, "CodeType_B"); 
} 
// ... 

を、またはように逆の好みの順にそれらを追加します後のコードタイプは以前のコードタイプを上書きします)。

次に、codeTypeMap.getを使用して、指定されたコードのタイプを検索してください。

private static String getCodeType(String inputCode) { 
    return codeTypeMap.get(inputCode); 
} 
+0

HashMapは重複キーを許可していません。別のキーを追加すると、前のコードに乗ることになります。 –

+1

確かに。しかし、あなたの現在のコード*も*重複するキーを許可しません:常に最初に一致したものを返します。これはちょうど私が "あなたがする必要がある..."の段落で行っていることです。 –

+0

キーが既に無効になっている場合、どのようにコードの種類を取得できますか?私が言うことは、CodeTypeOneListに5つの異なるコードが含まれているとします。マップに追加すると、最後に入力されたコードがキーになります。コードを取得するとき、入力はすべての可能なコードのうちのいずれかのコードになります。 –

関連する問題