ホームページ  >  記事  >  バックエンド開発  >  C# ハッシュセット

C# ハッシュセット

WBOY
WBOYオリジナル
2024-09-03 15:18:47248ブラウズ

順番に並んでいない要素の一意のコレクションは HashSet と呼ばれます。 C# では、名前空間 Systems.Collections.Generic の下にあり、コレクション内に重複が必要ない場合に使用されます。つまり、コレクションへの重複の挿入を回避し、HashSet のパフォーマンスを比較するために、HashSet は比較して優れたパフォーマンスを提供します。 HashSet が提供する list および set 操作は高いパフォーマンスをもたらし、オブジェクトが保持する要素の数は HashSet の容量となり、要素の数が増えると増加します。

C# の HashSet の構文

HashSet<Type_of_hashset> Hashset_name = new HashSet<Type_of_hashset>();

上記の構文は C# の HashSet を表します。ハッシュセットの種類は大文字の T で表すこともできます。

C# でのハッシュセットの仕組み

C# のハッシュセットは、順序のない要素の一意のコレクションです。これは名前空間 Systems.Collections.Generic の下にあり、コレクション内に重複が必要ない場合に使用されます。つまり、コレクションへの重複の挿入を回避し、HashSet のパフォーマンスを比較します。 HashSet は、HashSet が提供するリスト セット操作と比較して、高いパフォーマンスを提供します。ハッシュセットの仕組みを理解するために、C# で簡単なハッシュセット プログラムを作成することから始めましょう。

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HashSet {
class Programcheck {
static void Main(string[] args) {
HashSet < string > nameslist = new HashSet < string > {
"Shobha",
"Shivakumar",
"Shardha"
};
foreach(var nam in nameslist) {
Console.WriteLine(nam);
}
Console.ReadKey();
}
}
}

上記のプログラムでは、文字列型の単純なハッシュセットが作成されます。文字列 Shobha、Shivakumar、および Shardha が、文字列型の作成されたハッシュセットに追加されます。上記のプログラムの出力を以下のスナップショットに示します。

C# ハッシュセット

すでに説明したように、ハッシュセットではコレクションに重複した要素を追加することはできません。上記で作成した文字列型のハッシュセットに重複要素を追加して、プログラムの出力を理解してみましょう。次に、add メソッドを使用して要素をコレクションに追加します。

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HashSet {
class Programcheck {
static void Main(string[] args) {
HashSet < string > nameslist = new HashSet < string > {
"Shobha",
"Shivakumar",
"Shardha"
};
nameslist.Add("Shobha");
//collection cannot contain duplicate elements.
foreach(var nam in nameslist) {
Console.WriteLine(nam);
}
Console.ReadKey();
}
}
}

上記のプログラムでは、文字列型の単純なハッシュセットが作成されます。次に、文字列 Shobha、Shivakumar、および Shardha が、文字列型の作成されたハッシュセットに追加されます。 add メソッドを使用して作成されたハッシュセットに重複文字列 Shobha を追加しようとすると、エラーは表示されませんが、重複文字列は追加されず、出力でも同じことがわかります。上記のプログラムの出力を以下のスナップショットに示します。

C# ハッシュセット

C#にはハッシュセットに存在するメソッドとのUnionというメソッドがあります。これは、2 つのコレクションに存在する要素を、呼び出される単一のコレクションに結合するために使用されます。以下のプログラムを考えてみましょう。

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HashSet {
class Programcheck {
static void Main(string[] args) {
HashSet < string > nameslist = new HashSet < string > {
"Shobha",
"Shivakumar",
"Shardha"
};
HashSet < string > nameslist1 = new HashSet < string > {
"Shobha",
"Shivakumar",
"Shardha",
"Ravi",
"Nagu"
};
nameslist.UnionWith(nameslist1);
foreach(var nam in nameslist) {
Console.WriteLine(nam);
}
Console.ReadKey();
}
}
}

上記のプログラムでは、文字列型の単純なハッシュセットが 2 つ作成されます。まず、文字列 Shobha、Shivakumar、および Shardha が文字列型の最初のハッシュセットに追加されます。次に、文字列 Shobha、Shivakumar、Shardha、Ravi、および Nagu が型文字列の 2 番目のハッシュセットに追加されます。次に、メソッド is hashset で Union を利用して、最初のハッシュセットと 2 番目のハッシュセットの両方の要素を結合します。上記のプログラムの出力を以下のスナップショットに示します。

C# ハッシュセット

C#にはハッシュセットに存在するメソッドにIntersectというメソッドがあります。これは、2 つのコレクションに共通して存在する要素を、呼び出される単一のコレクションに結合するために使用されます。以下のプログラムを考えてみましょう。

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HashSet {
class Programcheck {
static void Main(string[] args) {
HashSet < string > nameslist = new HashSet < string > {
"Shobha",
"Shivakumar",
"Shardha"
};
HashSet < string > nameslist1 = new HashSet < string > {
"Shobha",
"Shivakumar",
"Shardha",
"Ravi",
"Nagu"
};
nameslist.IntersectWith(nameslist1);
foreach(var nam in nameslist) {
Console.WriteLine(nam);
}
Console.ReadKey();
}
}
}

上記のプログラムでは、文字列型の単純なハッシュセットが 2 つ作成されます。まず、文字列 Shobha、Shivakumar、および Shardha が文字列型の最初のハッシュセットに追加されます。次に、文字列 Shobha、Shivakumar、Shardha、Ravi、および Nagu が型文字列の 2 番目のハッシュセットに追加されます。次に、メソッド is hashset との intersecting を使用して、最初のハッシュセットと 2 番目のハッシュセットの両方の共通要素を結合します。上記のプログラムの出力を以下のスナップショットに示します。

C# ハッシュセット

C#のハッシュセットにメソッドが存在するExceptというメソッドがあります。これは、呼び出されたコレクションを除く 2 つのコレクションすべてに存在するすべての要素を削除するために使用されます。以下のプログラムを考えてみましょう。

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HashSet {
class Programcheck {
static void Main(string[] args) {
HashSet < string > nameslist = new HashSet < string > {
"Shobha",
"Shivakumar",
"Shardha"
};
HashSet < string > nameslist1 = new HashSet < string > {
"Shobha",
"Shivakumar",
"Shardha",
"Ravi",
"Nagu"
};
nameslist1.ExceptWith(nameslist);
foreach(var nam in nameslist1) {
Console.WriteLine(nam);
}
Console.ReadKey();
}
}
}

上記のプログラムでは、文字列型の単純なハッシュセットが 2 つ作成されます。まず、文字列 Shobha、Shivakumar、および Shardha が文字列型の最初のハッシュセットに追加されます。次に、文字列 Shobha、Shivakumar、Shardha、Ravi、および Nagu が型文字列の 2 番目のハッシュセットに追加されます。次に、ハッシュセットのメソッドで Except を使用して、呼び出されたコレクションを除くすべてのコレクションに存在するすべての要素を削除します。  上記のプログラムの出力を以下のスナップショットに示します。

C# ハッシュセット

Examples of C# HashSet

Given below are the examples of C# HashSet:

Example #1

C# program to illustrate the creation of a hashset and adding elements to the hashset.

Code:

using System;
using System.Collections.Generic;
class Hashset {
// Calling the main method
public static void Main()
{
// An hashset of even numbers is created
HashSet<int> even = new HashSet<int>();
// Adding the elements in to the hashset
for (int i = 0; i < 5; i++) {
even.Add(2 * i);
}
// Printing the elements in the hashset
foreach(int j in even)
{
Console.WriteLine(j);
}
}
}

Output:

C# ハッシュセット

Example #2

C# program to illustrate contains method in a hashset.

Code:

using System;
using System.Collections.Generic;
class hashset {
// Calling the main method
public static void Main()
{
// An hashset consisting of strings is created
HashSet<string> cl = new HashSet<string>();
// Elements are inserted into the hashset
cl.Add("Shobha");
cl.Add("Shivakumar");
cl.Add("Shardha");
cl.Add("Ravi");
// Using the contains method to check if an element is present in the collection
if (cl.Contains("Shobha"))
Console.WriteLine("The element specified is present");
else
Console.WriteLine("The element specified is not present");
}
}

Output:

C# ハッシュセット

以上がC# ハッシュセットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:C# での継承次の記事:C# での継承