Javaを使用しているとList内の文字列などが重複しているかどうかチェックする機会が良くあるのでその方法をメモしておきます。
Javaで重複チェックを行う時はHashSetのcontainsメソッドを使用するのが一番手っ取り早いかと思います。
Javaソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/** * <p>[概 要] 文字列の重複チェック</p> * <p>[詳 細] パラメータのリストで重複があればtrue、なければfalseを返します。</p> * <p>[備 考] </p> * @param checkList 重複チェック用のリスト * @return 重複有り:true、重複無し:false */ public static Boolean overlapCheck(List<String> checkList){ Boolean result = false; Set<String> checkHash = new HashSet<String>(); for(String str : checkList) { if(checkHash.contains(str)) { // 重複があればtrueをセットし終了 result = true; break; } else { // 重複しなければハッシュセットへ追加 checkHash.add(str); } } return result; } |
JUnitサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
@Test public void overlapCheckTest() { // 準備 List<String> paramList1 = new ArrayList<String>(); String str1 = "a"; String str2 = "b"; String str3 = "abc"; String str4 = "bc"; String str5 = "ab"; String str6 = "b"; paramList1.add(str1); paramList1.add(str2); paramList1.add(str3); paramList1.add(str4); paramList1.add(str5); paramList1.add(str6); List<String> paramList2 = new ArrayList<String>(); paramList2.add(str1); paramList2.add(str2); paramList2.add(str3); paramList2.add(str4); paramList2.add(str5); // 実行 Boolean result1 = UtilSample1.overlapCheck(paramList1); Boolean result2 = UtilSample1.overlapCheck(paramList2); // 検証 assertTrue("戻り値がfalseではありません。", result1); assertFalse("戻り値がfalseではありません。", result2); } |