C#のHashSetで重複要素を削除する方法
C#におけるセット(HashSet)とは
C#では、セット(集合)はHashSetクラスとして提供されています。HashSetは、配列内に含まれる重複した文字列や要素を自動的に取り除くことができる、パフォーマンスが最適化されたコレクションです。
HashSetの宣言方法
HashSetを宣言するには、以下のように記述します。
var h = new HashSet<string>(arr1);
上記のコードでは、すでに宣言済みの配列 arr1 をもとにHashSetを作成しています。
重複要素の削除
作成したHashSetを配列に変換し直すことで、重複した単語を簡単に取り除くことができます。
string[] arr2 = h.ToArray();
サンプルコード
それでは、C#のHashSetを使って重複する文字列を削除する具体例を見てみましょう。
ここでは、あえて重複した要素を含む配列を用意します。
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main() {
string[] arr1 = {"Table","Chair","Pen","Clip","Table"};
Console.WriteLine(string.Join(",", arr1));
// HashSet
var h = new HashSet<string>(arr1);
// 重複する単語を取り除く
string[] arr2 = h.ToArray();
Console.WriteLine(string.Join(",", arr2));
}
}実行結果
Table,Chair,Pen,Clip,Table Table,Chair,Pen,Clip
このように、元の配列には「Table」が2つ含まれていましたが、HashSetを経由することで重複が排除され、一意な要素だけが残ります。HashSetは内部的にハッシュテーブルを使用しているため、大量のデータから重複を除去する場合でも高速に動作するのが特徴です。
-
C++で二分木の重複する部分木を検出する方法
問題の概要二分木が与えられたとき、その中に存在する重複する部分木(duplicate subtrees)をすべて見つける問題を考えてみましょう。ここでいう「重複」とは、構造とノードの値が完全に一致する部分木が2つ以上存在することを意味します。各種類の重複部分木について、代表としてどれか1つの根ノードを返せばよいことになっています。たとえば、次のような二分木があるとします。この木に含まれる重複する部分木は、以下の2つです。値 4 を持つ単一ノードの部分木(2か所に出現)根が 2 で、子に 4 を持つ部分木(2か所に出現)解法のアプローチ:部分木のシリアライズこの問題を効率的に解く鍵となるのは、部
-
重複ファイルの削除方法|PCの空き容量を増やして動作を高速化する完全ガイド
パソコンを整理整頓することは、高速で安定した状態を保つために非常に重要です。そのため、Windowsユーザーなら誰もが、ディスククリーンアップ、デフラグ、レジストリの修復、ウイルススキャンといった定期的なメンテナンス作業を行う必要があります。しかし、意外と見落とされがちな重要なメンテナンス作業がもう一つあります。それが「重複ファイルの削除」です。 重複ファイルとは? どのパソコンにも重複ファイルは存在します。文書、音楽、画像、動画などのコピーのことです。これらのファイルは時間とともに蓄積し、PCの中を散らかしていきます。その結果、空きディスク容量が減少し、ファイルやフォルダが乱雑になってしま