前回の記事で紹介した PowerShell Core における配列は、値の追加をすることはできますが、任意の要素の削除や全要素の削除をしても配列のサイズ自体が変わることはありませんでした。このため、実際に格納されている値の数は「.Count」プロパティを参照してもわかりません。
この問題は .NET Core が持つ List クラスを使用した動的配列を使用することで解決することができます。
今回は、PowerShell Core で動的配列を作成する方法と、その操作方法について説明します。
動的配列を生成するには?
PowerShell Core で動的配列を生成するには以下の書式でコマンドを実行します。
変数 = New-Object System.Collections.Generic.List[データ型]
例えば、文字列を扱う動的配列を作成したい場合は、「データ型」に string を指定して以下のコマンドを実行します。
$strAry = New-Object System.Collections.Generic.List[string]
New-Object というコマンドレットは、オブジェクトを生成する時に使用します。C# や Java における new 演算子、VB.NET における New 演算子の役割をはたし、New-Object コマンドレットの右側に記述されたオブジェクトの生成を行います。
要素を追加するには?
要素を追加するには、Add メソッド または AddRange メソッドを使用します。
Add メソッドは、単一の値を追加します。
たとえば、Add メソッドを使用して、”Apple”, “Orange”, “Banana” を追加する場合は、以下のようにします。
$strAry.Add("Apple") $strAry.Add("Orange") $strAry.Add("Banana")
AddRange メソッドは複数の値を一度に追加することができます。
例えば、”Lemon”, Grapes”, “Strawberry” を一度に追加する場合は、以下のようにします。
$strAry.AddRange([string[]]("Lemon", "Grapes", "Strawberry"))
上記で追加した値を参照するには、変数名を入力して [Enter]キーを押します。
PS > $strAry [Enter] Apple Orange Banana Lemon Grapes Strawberry
要素数をカウントするには?
いくつの要素(データ)が入っているかを確認するには、 Count プロパティを使用します。
Count プロパティは、「変数名.Count」のようにして使用します。
PS > $strAry.Count 6
要素を挿入するには?
Insert メソッドを使用することで、途中に要素を挿入することができます。
書式は以下の通りです。挿入位置には、要素番号を指定します。
変数.Insert(挿入位置, 挿入データ)
例えば、要素番号が 2 の位置に “Lime” を挿入する場合は以下のようにします。
$strAry.Insert(2,"Lime")
要素を並べ替えるには?
Sortメソッドを使用することで、要素の並べ替えを行うことができます。
PS > $strAry.Sort() PS > $strAry [Enter] Apple Banana Grapes Lemon Lime Orange Strawberry
配列が保持している状態を変更せずに、並び順を変更した結果を取得したい場合は Sort-Object を使用します。
昇順での並び替え結果は以下で取得することができます。
$strAry | Sort-Object Apple Banana Grapes Lemon Lime Orange Strawberry
降順での並び替え結果は以下で取得することができます。
$strAry | Sort-Object -Descending Strawberry Orange Lime Lemon Grapes Banana Apple
要素を削除するには?
指定した要素番号のデータを削除する
指定した要素番号のデータを削除するには RemoveAt メソッドを使用します。
例えば、要素番号 3 のデータを削除するには、以下のコマンドを実行します。
$strAry.RemoveAt(3)
指定したデータを削除する
データそのものを指定して削除するには Remove メソッドを使用します。
以下のコマンドを実行すると、”Lemon” を削除します。削除すると、後続の要素は前に詰められます。
$strAry.Remove("Lemon")
全てのデータを削除する
全てのデータを削除するには Clear メソッドを使用します。
$strAry.Clear()
まとめ
動的配列(List)には、今回紹介した以外にも機能があります。
参考までに C# の List のドキュメントを URL を以下に示します。
最低限、本記事で紹介した使用方法を覚えておけば十分かと思います。
ぜひ活用してみてください。
コメント