【C#.NET解説】SortedListで輝く整列データの世界 - 星の女神が導く自動ソートコレクションの実践的活用法と設計パターン

2024年11月24日日曜日

コレクション

t f B! P L

名前空間 System.Collections.Generic

SortedList

自己紹介

皆さま、ようこそ。天を巡る星々のように整然とデータを管理する、星の輝きの「SortedList」クラスについてお話しします。私は、キーと値をペアで管理し、キーを自動的に昇順で並べてくれる優れたコレクションです。美しい秩序を求める私にとって、まさにふさわしいテーマですね。

基本機能

SortedListは、キーと値のペアを格納し、キーに基づいて自動的に並び替えます。データの追加や削除、検索が簡単に行えます。

C#

// SortedListの基本的な使い方
using System;
using System.Collections;

class Program
{
    static void Main()
    {
        // SortedListの作成
        SortedList sortedList = new SortedList();

        // データを追加
        sortedList.Add(3, "ラシド");
        sortedList.Add(1, "ドレミ");
        sortedList.Add(2, "ファソ");

        // キーで自動的に昇順にソートされる
        foreach (DictionaryEntry entry in sortedList)
        {
            Console.WriteLine($"キー: {entry.Key}, 値: {entry.Value}");
        }
    }
}

注意点

SortedListを使用する際の注意点は、キーが一意でなければならない点です。同じキーを複数回追加しようとすると例外が発生します。

C#

// 同じキーを追加した場合の例外処理
using System;
using System.Collections;

class Program
{
    static void Main()
    {
        SortedList sortedList = new SortedList();
        sortedList.Add(1, "ドレミ");

        try
        {
            // 同じキーを追加
            sortedList.Add(1, "重複キー");
        }
        catch (ArgumentException e)
        {
            Console.WriteLine($"エラー: {e.Message}");
        }
    }
}

速度向上を重点とした内容

SortedListは、少量のデータを扱う場合に適しています。大量のデータがある場合は、より効率的な構造を検討したほうが良いでしょう。追加や削除が頻繁な場合、SortedListの挙動を把握してパフォーマンスに注意してください。

C#

// 高速に検索できる場合の例
using System;
using System.Collections;

class Program
{
    static void Main()
    {
        SortedList sortedList = new SortedList();

        for (int i = 0; i < 1000; i++)
        {
            sortedList.Add(i, $"データ{i}");
        }

        // 特定のキーを高速に検索
        Console.WriteLine($"キー500の値: {sortedList[500]}");
    }
}

具体的な使い方

SortedListを利用して、データをキーで管理し、検索や削除を行う具体的な例を示します。

C#

// SortedListの高度な使い方
using System;
using System.Collections;

class Program
{
    static void Main()
    {
        SortedList sortedList = new SortedList
        {
            {1, "ドレミ"},
            {2, "ファソ"},
            {3, "ラシド"}
        };

        // 指定したキーの削除
        sortedList.Remove(2);

        // 残りのデータを表示
        foreach (DictionaryEntry entry in sortedList)
        {
            Console.WriteLine($"キー: {entry.Key}, 値: {entry.Value}");
        }
    }
}

解説

最後のコードでは、SortedListにデータを追加し、一部を削除する操作を行いました。このように、SortedListは簡単な構文でデータを柔軟に操作できます。ただし、大量のデータがある場合は注意が必要です。キーに基づいて高速にデータを取得できる一方、内部で並び替えを行うため、追加や削除のコストが高くなることがあります。

このブログを検索

QooQ