[PowerShell Core 入門] 動的配列の使用方法

PowerShell Core PowerShell Core
PowerShell Core

前回の記事で紹介した 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
Add や AddRange メソッドを使用して要素を追加すると、自動で配列のサイズが変更されます。

要素数をカウントするには?

いくつの要素(データ)が入っているかを確認するには、 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 メソッドを実行すると、はじめに要素が入っていたときの並び順と Sort メソッド実行後の並び順が変更されます。

配列が保持している状態を変更せずに、並び順を変更した結果を取得したい場合は 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 を以下に示します。

List クラス (System.Collections.Generic)
インデックスでアクセスできるオブジェクトの厳密に型指定されたリストを表します。 リストの検索、並べ替え、操作を行うメソッドを提供します。

最低限、本記事で紹介した使用方法を覚えておけば十分かと思います。

ぜひ活用してみてください。

コメント

タイトルとURLをコピーしました