LoginSignup
9
9

More than 3 years have passed since last update.

【C#入門】Listの使い方について|要素の追加・削除、ソート、検索

Last updated at Posted at 2020-04-05

この記事では、《SQL Server のストアドプロシージャ》について、
業務を通して学習した内容を、備忘録としてまとめています。

  • 『List』とは…?
  • 『List』の要素の追加・削除する方法
  • 『List』をソート・検索する方法

こういった内容についてまとめています。

※本記事は、自分で学習したことのまとめ用として書いています。
尚、解説で誤った点があれば、スローして頂ければ喜んでキャッチしますのでお願い致します。

『List』 とは…?

list_1.jpg

『List』とは・・・

同じデータ型の値をまとめて取り扱うためのクラスです。

『List』は配列と異なり、簡単に要素を追加・削除することができるメソッドが用意されているので…

要素数が変化する場合には、『List』を使用します。

C#では、配列のようなデータ構造に対して、途中でデータを追加・削除したい場合にListクラスを使用します。

『List』 の基本的な使い方

まず、使用する際は下記を記述します。

using System;
using System.Collections.Generic;

『List』 の宣言・初期化について

program.cs
using System;
using System.Collections.Generic;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {

            // int型を格納するリストを宣言
            var intlist = new List<int>();

            // 初期化した際の初期値を指定する場合は、以下のように宣言
            var number = new List<int>()
            {
                10, 20, 30, 40, 50, 60, 70, 80, 90, 100
            };

            // string型を格納するリストを宣言
            var strList = new List<string>()
            {
                "hoge", "hogehoge"
            };
        }
    }
}

『List』 の要素へのアクセス方法

// 配列のように添え字でアクセスできます
int item = list[1];

実際に動かしてみます。

program.cs
using System;
using System.Collections.Generic;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            var sampleList = new List<string>()
            {
                "hoge", "hogehoge"
            };

            Console.WriteLine(sampleList[1]);
        }
    }
}

実行結果:

hogehoge

『List』 の要素を全部取り出す

var sampleList = new List<string>()
    {
        "hoge", "hogehoge"
    };

    foreach (var str in sampleList)
    {
        Console.WriteLine(str);
    }

実際に動かしてみます。

program.cs
using System;
using System.Collections.Generic;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            var sampleList = new List<string>()
            {
                "hoge", "hogehoge"
            };

            foreach (var str in sampleList)
            {
                Console.WriteLine(str);
            }
        }
    }
}

実行結果:

hoge
hogehoge

『List』 と 『ArrayList』 の違いは…?

list_2.jpg

ここでは、『List』と『ArrayList』の違いを解説します。

『List』は…

指定したデータ型の要素しか格納できませんが、要素を取り出すときにキャストをする必要がありません。

そのため・・・

データ型があらかじめ決まっている場合には、『List』を使う方が便利です。

反対に、『ArrayList』は…

異なるデータ型を格納することができますが、要素を取り出すときにキャストする必要があり、コードの記述に手間がかかります。

基本的には、『ArrayList』よりも『List』の方が使いやすいので、『List』を使用すれば大丈夫かと思います。

『List』 の要素の追加・削除する方法|Add/Remove

『List』 の要素の追加|Addメソッド

ここでは・・・

『List』に要素を追加する方法を解説します。

『List』に要素を追加するには、Addメソッドを使います。

Addメソッドは、下記のように使用します。

program.cs
using System;
using System.Collections.Generic;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            var sampleList = new List<string>();

            sampleList.Add("hoge");
            sampleList.Add("hogehoge");

            foreach (var str in sampleList)
            {
                Console.WriteLine(str);
            }
        }
    }
}

実行結果:

hoge
hogehoge

『List』 の要素の削除|Removeメソッド

ここでは・・・

『List』の要素を削除する方法を解説します。

『List』の要素を削除するには、Removeメソッドを使います。

Removeメソッドは、下記のように使用します。

program.cs
using System;
using System.Collections.Generic;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            var sampleList = new List<string>();

            sampleList.Add("hoge");
            sampleList.Add("hogehoge");

            sampleList.Remove("hogehoge");

            foreach (var str in sampleList)
            {
                Console.WriteLine(str);
            }
        }
    }
}

実行結果:

hoge

『List』 を並び替え(ソート)する方法|OrderByメソッド

ここでは・・・

『List』をソートする方法を解説します。

『List』をソートするには、LINQ拡張のOrderByメソッドを使います。

OrderByメソッドは、下記のように使用します。

program.cs
using System;
using System.Collections.Generic;
using System.Linq;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            var number = new List<int>()
            {
                20, 10, 40, 30, 60, 50, 80, 70, 100, 90
            };

            var orderedNumber = number.OrderBy(x => x) //.OrderByDescending(x => x)

            foreach (var num in orderedNumber)
            {
                Console.WriteLine(num);
            }
        }
    }
}

『List』 を検索する方法|Whereメソッド、Containsメソッド

『List』の要素を検索して、目的の要素を探すにはいくつかの方法がありますが…

通常は、LINQ拡張を使えばいいです。

ただし・・・

要素数が多く、かつ、要素が昇順に並んでいるときに特定の要素を検索する場合は、

ListクラスのBinarySearchメソッドが高速です。

また・・・

要素が含まれているどうかを判定するには、ListクラスのContainsメソッドを使用します。

Whereメソッド|条件を指定して要素を検索する

『List』の要素を検索して、条件に一致する要素を取得するには、LINQ拡張のWhereメソッドを使います。

Whereメソッドは、下記のように使用します。

program.cs
using System;
using System.Collections.Generic;
using System.Linq;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            var number = new List<int>()
            {
                10, 20, 30, 40, 50, 60, 70, 80, 90, 100
            };

            var selectedNumber = number.Where(x => x > 50);

            foreach (var num in selectedNumber)
            {
                Console.WriteLine(num);
            }
        }
    }
}

実行結果:

60
70
80
90
100

Containsメソッド|指定した値が含まれるか判定する

『List』の要素を検索して値が含まれるかどうかを判定するには、ListクラスContainsメソッドを使います。

Containsメソッドは、下記のように使用します。

program.cs
using System;
using System.Collections.Generic;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            var sampleList = new List<string>();
            sampleList.Add("hoge");
            sampleList.Add("hogehoge");

            string item = "hogehoge";

            if (sampleList.Contains(item))
            {
                Console.WriteLine("{0}が見つかりました", item);
            }
            else
            {
                Console.WriteLine("{0}は見つかりませんでした", item);
            }

            foreach (var str in sampleList)
            {
                Console.WriteLine(str);
            }
        }
    }
}

実行結果:

hogehogeが見つかりました
hoge
hogehoge
9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9