C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で配列に重複する数値が含まれているか確認する方法

C#で配列を扱う際、同じ数値が複数回出現していないか(重複が存在するかどうか)を確認したいケースはよくあります。この記事では、Dictionary(辞書)を使って各要素の出現回数をカウントし、重複を検出する方法を解説します。

1. 配列の準備

まず、確認対象となる配列を用意します。

int[] arr = {
    87,
    55,
    23,
    87,
    45,
    23,
    98
};

この配列には「87」と「23」がそれぞれ2回出現しているため、重複が存在します。

2. Dictionaryで出現回数をカウントする

次に、Dictionary<int, int>を宣言し、foreachループで配列を走査します。すでにキーが存在する場合はカウントを1増やし、存在しない場合は1を設定します。

var dict = new Dictionary<int, int>();
foreach(var count in arr) {
    if (dict.ContainsKey(count))
        dict[count]++;
    else
        dict[count] = 1;
}

ループ処理後、DictionaryのValue(値)を参照することで、各数値が何回出現したかを確認できます。値が2以上の要素があれば、その数値は重複しています。

3. 完全なコード例

ここまでの手順をまとめた完全なサンプルコードが以下です。

using System;
using System.Collections.Generic;
namespace Demo {
    public class Program {
        public static void Main(string[] args) {
            int[] arr = {
                87,
                55,
                23,
                87,
                45,
                23,
                98
            };
            var dict = new Dictionary<int, int>();
            foreach(var count in arr) {
                if (dict.ContainsKey(count))
                    dict[count]++;
                else
                    dict[count] = 1;
            }
            foreach(var val in dict)
                Console.WriteLine("{0} occurred {1} times", val.Key, val.Value);
        }
    }
}

実行結果

87 occurred 2 times
55 occurred 1 times
23 occurred 2 times
45 occurred 1 times
98 occurred 1 times

このように、「87」と「23」が2回出現していることが一目でわかります。重複の有無だけを判定したい場合は、出現回数が2以上のキーが存在するかどうかをチェックしてください。

補足:HashSetを使った簡潔な判定方法

単純に「重複があるかどうか」だけを知りたい場合は、HashSet<T>を使うとより簡潔に記述できます。HashSetは重複する要素を自動的に除外するため、元の配列の長さと比較するだけで判定可能です。

bool hasDuplicates = arr.Length != new HashSet<int>(arr).Count;
Console.WriteLine(hasDuplicates ? "重複あり" : "重複なし");

上記のコードでは、配列の要素数とHashSet化した後の要素数が異なれば重複が存在すると判断できます。用途に応じて、Dictionaryによる詳細な集計とHashSetによる高速な判定を使い分けるとよいでしょう。

  1. Microsoft Wordを使ってオンライン上の重複テキストを無料でチェックする方法

    Microsoft Wordを使ってオンライン上の重複テキストを確認したい場合、現在ではサードパーティ製アドインを使用せずに作業を完了できます。高価な重複テキスト検索ツールにお金をかける必要はありません。Wordだけでこの作業を十分にこなせるからです。その鍵となるのが、数ヶ月前にWordに搭載された新しいMicrosoft Editor機能です。 毎日複数のドキュメントをチェックして、誰かが何らかのソースからテキストをコピーしていないか確認したいとしましょう。選択肢は2つあります。1つ目は、インターネット上でよく見かける専用の重複テキスト検索ツールや盗作チェッカーソフトウェアを利用する方法です

  2. Pythonで文字列が空白文字のみかどうか判定する方法|isspace()と正規表現の使い方

    文字列が空白文字のみかどうかを判定する2つの方法 Pythonでは、文字列に空白文字(スペース、タブ、改行など)だけが含まれているかどうかを確認する方法が主に2つあります。1つ目は文字列メソッドの isspace() を使う方法、2つ目は標準ライブラリの re モジュールによる正規表現を使う方法です。 方法1:isspace() メソッドを使う isspace() は、文字列が空白文字のみで構成されており、かつ少なくとも1文字以上ある場合に True を返す便利なメソッドです。 s = \t\n print(s.isspace()) # True s = hello pri