新人エンジニア研修で知っておきたいListの使い方
なぜ、Listの理解が重要なのか、その理由
この記事では、弊社の新人エンジニア研修の参考にC#を解説します。
私たちは既に配列を学んでいます。配列のメリットは、同じ型のデータをまとめられる点にありました。繰り返し処理と組み合わせて、複数の要素に対して一気に処理をするということも容易でした。
しかし、配列にはデメリットもありました。それは、要素の数をあらかじめ指定しなければならないということです。
もしも、要素の数にあわせて伸び縮みする配列があったらさらに便利だと思いませんか?
実はそんなクラスがあるのです。
こんにちは。ゆうせいです。
今回はC#のList<T>
について解説します!List<T>
は、柔軟で使いやすいデータ構造で、配列のような感覚で使える上に、要素数が動的に増減する便利な機能を持っています。ジェネリクスや便利なメソッドについても触れながら、初心者でも使いこなせるように丁寧に説明していきますね。
List<T>
とは?
List<T>
は、C#で提供されている動的配列の一種です。配列と似ていますが、以下の特徴があります。
- 要素数が自動的に伸縮する
- 要素の追加、削除、検索といった操作が簡単
- ジェネリクスを使用して型安全に扱える
つまり、固定サイズの配列と違い、サイズを気にせず使えるのが大きな利点です!
List<T>
の使い方
まずは基本的な操作方法から見てみましょう。
例1: List<T>
の初期化と要素操作
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// Listの初期化
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
// 要素の追加
names.Add("Diana");
// 要素の削除
names.Remove("Bob");
// 要素数の取得
Console.WriteLine($"要素数: {names.Count}");
// 要素のループ処理
foreach (var name in names)
{
Console.WriteLine(name);
}
}
}
結果
上記のコードを実行すると、以下のような結果が表示されます。
要素数: 3
Alice
Charlie
Diana
ジェネリクスとは?
C#では、List<T>
のT
に型を指定することで、特定の型だけを格納できるようになります。この<T>
の仕組みをジェネリクスといいます。
例えば、以下のように書くことで、List<int>
は整数専用、List<string>
は文字列専用のリストになります。
List<int> numbers = new List<int> { 1, 2, 3 };
List<string> names = new List<string> { "Alice", "Bob" };
型安全なコード
ジェネリクスを使うことで、リストに異なる型のデータが混ざるのを防ぎ、実行時のエラーを防ぐことができます。
List<T>
の便利なメソッド
List<T>
には多くの便利なメソッドがあります。いくつか代表的なものを紹介します。
1. 要素の検索
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
bool containsAlice = names.Contains("Alice"); // true
int index = names.IndexOf("Bob"); // 1
Contains
: 指定した要素が存在するかチェックIndexOf
: 指定した要素が最初に見つかった位置を返す
2. 条件に基づく削除
RemoveAll
メソッドを使うと、特定の条件に一致する要素を一括で削除できます。
List<string> names = new List<string> { "Alice", "Anna", "Bob" };
names.RemoveAll(name => name.StartsWith("A")); // "Alice"と"Anna"を削除
3. ソート
リストの要素を並び替える場合はSort
を使用します。
List<int> numbers = new List<int> { 5, 2, 8, 1 };
numbers.Sort(); // 昇順に並び替え
注意点
foreach
ループでの削除操作はNG
List<T>
をforeach
ループで回しながら要素を削除しようとすると、InvalidOperationException
がスローされます。
foreach (var name in names)
{
if (name.StartsWith("A"))
{
names.Remove(name); // 例外が発生する
}
}
このような場合は、for
ループを使うか、RemoveAll
メソッドを活用しましょう。
List<T>
と配列の違い
特徴 | 配列 (Array ) | List<T> |
---|---|---|
サイズの変更 | 固定 | 動的に伸縮 |
型安全性 | サポート(ジェネリクスなし) | サポート(ジェネリクスあり) |
検索や削除のメソッド | なし | あり |
これらのポイントを押さえながら、List<T>
をどんどん使ってみてください!初めて使うときは、簡単なプログラムから始めるのがおすすめです。それでは、ぜひ試してみてくださいね!
まとめができたら、アウトプットとして演習問題にチャレンジしましょう。
IT企業向け新人研修おすすめ資料 無料公開中 (saycon.co.jp)