名前空間 System.Collections
自己紹介
わしは古の時代から存在する巨人。今日はお主らに、.NETの歴史的なコレクション「ArrayList」について語り聞かせようぞ。わしも古いものだが、このArrayListもまた古の知恵じゃ。基本機能
ArrayListは自在に大きさを変えられる不思議な器じゃ。わしの体のように、どんなものでも受け入れることができる。数も文字も、すべてを一つの器に収められるのじゃ。じゃが、今はより新しい「Listメモリ効率とボックス化
わしの時代を思い出すが、ArrayListは値型を格納する際にボックス化が発生する。これにより余計なメモリを使うことになるのじゃ。現代のプログラミングではこれは避けたい仕組みじゃな。型安全性の考慮
何でも入れられるということは、諸刃の剣じゃ。取り出す際には型のチェックが必要になる。間違えると例外という罰が下るぞ。コレクションの先駆者
わしと同じく、ArrayListは.NETの黎明期から存在する。コレクションの始まりとも言えるが、今では型安全な代替手段があるため、新規開発での使用は推奨されていないのじゃ。実装の特徴
内部は配列で実装されておる。要素の追加で容量が足りなくなると、新しい配列を作り直すのじゃ。これはパフォーマンスに影響を与えることもある。サンプルコード
C#
using System; using System.Collections; class Program { static void Main(string[] args) { // ArrayListの生成 ArrayList ancientCollection = new ArrayList(); // 様々な型のデータを追加 Console.WriteLine("=== データの追加 ==="); ancientCollection.Add("古の魔法"); ancientCollection.Add(1000); ancientCollection.Add(true); ancientCollection.Add(3.14159); // コレクションの内容を表示 Console.WriteLine("\n=== 全要素の表示 ==="); foreach (object item in ancientCollection) { Console.WriteLine($"格納された要素: {item} (型: {item.GetType()})"); } // 特定の位置に要素を挿入 Console.WriteLine("\n=== 要素の挿入 ==="); ancientCollection.Insert(2, "挿入された予言"); // 要素の検索 Console.WriteLine("\n=== 要素の検索 ==="); int index = ancientCollection.IndexOf(1000); Console.WriteLine($"1000の位置: {index}番目"); // 要素の削除 Console.WriteLine("\n=== 要素の削除 ==="); ancientCollection.Remove("古の魔法"); ancientCollection.RemoveAt(1); // 残りの要素を表示 Console.WriteLine("\n=== 削除後の要素 ==="); foreach (object item in ancientCollection) { Console.WriteLine($"残存要素: {item}"); } // 要素数と容量の確認 Console.WriteLine($"\n現在の要素数: {ancientCollection.Count}"); Console.WriteLine($"現在の容量: {ancientCollection.Capacity}"); // コレクションのクリア ancientCollection.Clear(); Console.WriteLine($"\nクリア後の要素数: {ancientCollection.Count}"); } }
解説
このサンプルコードでは以下の操作をデモンストレーションしています:- ArrayListの作成と初期化
- 異なる型のデータ追加(文字列、整数、真偽値、浮動小数点数)
- コレクション内の要素の列挙と型情報の表示
- 指定位置への要素の挿入
- 要素の検索機能
- 要素の削除(値による削除とインデックスによる削除)
- コレクションの要素数と容量の確認 8. コレクションの完全クリア
このコードは、ArrayListの基本的な操作をすべて含んでおり、 実行時に各操作の結果が確認できるように構成されています。
0 件のコメント:
コメントを投稿