PowerShell(ArrayListとHashSet)


アニメ『ゲーマーズ!』
今のところこのアニメを見ても衝動は起こりませんが、原作を読むとゲームがやりたくなるらしいです。
私もゲームばかりやっていた一人ですが、格闘ゲームの操作と、コマンドの入力って何か似てるなあと思った頃から、ゲームの代わりにPCのコマンドを打つようになりました。
今やコマンドラインがゲームのようなものです。

さて、PowerShellはまだまだ続きます。慣れたらUnix/Linuxのコマンドよりもすごくなりそうな予感があります。
今回は、.NETのArrayListとHashSetを使います。

配列の使い方はこうでした。

PS C:\Users\takk> $arr=1..10
PS C:\Users\takk> $arr
1
2
3
4
5
6
7
8
9
10
PS C:\Users\takk>

ArrayListへ置き換えるには、new-objectを使います。

PS C:\Users\takk> $lis = new-object System.Collections.ArrayList(,$arr)
PS C:\Users\takk> $lis
1
2
3
4
5
6
7
8
9
10
PS C:\Users\takk>

要素5番目に100を追加しましょう。

PS C:\Users\takk> $lis.Insert(5,100)
PS C:\Users\takk> $lis
1
2
3
4
5
100
6
7
8
9
10

HashSetの置き換えも同様です。object型です。

PS C:\Users\takk> $hashset=new-object System.Collections.Generic.HashSet[object](,$arr)
PS C:\Users\takk> $hashset
1
2
3
4
5
6
7
8
9
10
PS C:\Users\takk>

HashSetに重複した値を追加しようとすると、失敗します。

PS C:\Users\takk> $hashset.add(5)
False
PS C:\Users\takk> $hashset
1
2
3
4
5
6
7
8
9
10
PS C:\Users\takk>

差分を抽出してみましょう。
元の集合から、1,3,5,7,9を引いてみます。

PS C:\Users\takk> $hashset.ExceptWith(@(1,3,5,7,9))
PS C:\Users\takk> $hashset
2
4
6
8
10
PS C:\Users\takk>

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA