いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

.NET クラスライブラリ探訪-013 (System.Collections.Generic.List)(01)

Listジェネリッククラスは、元々存在していたSystem.Collections.ArrayListジェネリック版です。
動作もほぼ同じです。今回は、基本的な操作について記述します。


実は、このListクラスの本領発揮は次の回で予定している、特定のdelegateを渡して処理をする系のメソッド達です。
俗に言うFunctorインターフェースですね。
javaでいうと、commons-collectionsのFunctor Interfaces、Rubyでいうとブロックをメソッドに渡して
処理をするのと似ています。


てことで、今回のサンプルです。
たいした事はしていませんが・・・。w

using System;
using System.Collections.Generic;
using System.Text;

namespace Gsf.Samples.ClassLibraryResearch.System.Collections.Generic {

    /// <summary>
    /// System.Collections.Generic.Listクラスのサンプルです。
    /// </summary>
    /// <remarks>
    /// Listクラスの基本的な使用方法について記述しています。
    /// </remarks>
    public class ListResearcher : IExecutable{

        public void Execute() {
            //////////////////////////////////////
            //
            // Listクラスの基本的な操作
            //

            //
            // 要素の追加(Addメソッド)
            //
            List<string> list1 = new List<string>();

            list1.Add("gsf_zero1");
            list1.Add("gsf_zero2");

            //
            // 要素を一気に追加(AddRangeメソッド)
            // 
            // 引数に与えるものは、IEnumerable<T>を実装しているものなので
            // Listはもちろん同じ型の配列も渡せます。
            // (System.ArrayはIEnumerableを実装しています。)
            //
            list1.AddRange(new string[]{"gsf_zero3", "gsf_zero4"});

            foreach(string s in list1){
                Console.WriteLine(s);
            }

            //
            // リスト内のデータの件数(Countプロパティ)
            //
            Console.WriteLine(list1.Count);

            //
            // 特定の要素がリスト内に存在するかどうか(Containsメソッド)
            //
            Console.WriteLine("gsf_zero2という値がリスト内に存在するか?:{0}", list1.Contains("gsf_zero2"));

            //
            // 指定したインデックスの位置に要素を追加する(Insertメソッド)
            // InsertRangeはAddRangeと同じ使い方なので割愛します。
            //
            list1.Insert(0, "gsf_zero0");
            Console.WriteLine("{0}", list1[0]);

            //
            // 要素を削除(Removeメソッド)
            // RemoveAtメソッドはRemoveメソッドをインデックスで利用するものですので割愛します。
            //
            list1.Remove("gsf_zero0");
            Console.WriteLine("{0}", list1[0]);

            //
            // データのソート・リバース(Sortメソッド・Reverseメソッド)
            //
            Console.WriteLine("===============ソート前===================");
            foreach(string s in list1){ Console.WriteLine(s); }
            Console.WriteLine("===============リバース後===================");
            list1.Reverse();
            foreach(string s in list1) { Console.WriteLine(s); }
            Console.WriteLine("===============ソート後===================");
            list1.Sort();
            foreach(string s in list1) { Console.WriteLine(s); }

            //
            // データのクリア(Clearメソッド)
            //
            list1.Clear();
            Console.WriteLine(list1.Count);
        }

    }
}

ちなみに、ListクラスはIListインターフェースを実装しています。
他にもICollectionなども実装しています。



================================
過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。