前回の記事「delphi-collを使ってみる(1)」の続きです。
ジェネリックを用いたコレクションのクラスライブラリdelphi-collのCollections.Lists.TList<T>をもう少し使ってみます。
■Rangeメソッド
Rangeメソッドは指定した範囲の要素を返します。
var
List: TList<Integer>;
Num: Integer;
begin
List := TList<Integer>.Create;
List.Add(1);
List.Add(3);
List.Add(5);
List.Add(7);
List.Add(9);
//1番目から3番目まで
for Num in List.Range(1, 3) do
WriteLn(Num);
//=> 3 5 7
■Takeメソッド
Takeメソッドは先頭から指定した数の要素を返します。
var
List: TList<Integer>;
Num: Integer;
begin
List := TList<Integer>.Create;
List.Add(1);
List.Add(3);
List.Add(5);
List.Add(7);
//3つの要素を取得する
for Num in List.Take(3) do
WriteLn(Num);
//=> 1 3 5
■TakeWhileメソッド
TakeWhileメソッドは先頭から条件を満たす要素を返します。
var
List: TList<Integer>;
Num: Integer;
begin
List := TList<Integer>.Create;
List.Add(1);
List.Add(2);
List.Add(3);
List.Add(1);
//先頭から3未満の要素を取得する
for Num in List.TakeWhile(
function(X: Integer):Boolean begin
Exit(X < 3)
end
) do
WriteLn(Num);
//=> 1 2
■TakeWhileLowerメソッド、TakeWhileLowerOrEqualメソッド
TakeWhileLowerメソッドは先頭から引数未満の値を返します。
TakeWhileLowerOrEqualメソッドは先頭から引数以下の値を返します。
var
List: TList<Integer>;
Num: Integer;
begin
List := TList<Integer>.Create;
List.Add(1);
List.Add(2);
List.Add(3);
List.Add(4);
List.Add(1);
//3未満の数
for Num in List.TakeWhileLower(3) do
WriteLn(Num);
//=> 1 2
//3以下のの数
for Num in List.TakeWhileLowerOrEqual(3) do
WriteLn(Num);
//=> 1 2 3
■TakeWhileGreaterメソッド、TakeWhileGreaterOrEqualメソッド
TakeWhileGreaterメソッドは先頭から引数より大きい値を返します。
TakeWhileGreaterOrEqualメソッドは先頭から引数以上の値を返します。
var
List: TList<Integer>;
Num: Integer;
begin
List := TList<Integer>.Create;
List.Add(5);
List.Add(4);
List.Add(3);
List.Add(2);
List.Add(5);
//3より大きの数
for Num in List.TakeWhileGreater(3) do
WriteLn(Num);
//=> 5 4
//3以上のの数
for Num in List.TakeWhileGreaterOrEqual(3) do
WriteLn(Num);
//=> 5 4 3
■Skipメソッド
Skipメソッドは引数のインデックス以降の要素を返します。
var
List: TList<Integer>;
Num: Integer;
begin
List := TList<Integer>.Create;
List.Add(1);
List.Add(2);
List.Add(3);
List.Add(4);
List.Add(5);
//2番目以降の要素
for Num in List.Skip(2) do
WriteLn(Num);
//=> 3 4 5
■SkipWhileメソッド
SkipWhileメソッドは引数の条件を満たす要素以降の要素を返します。
var
List: TList<Integer>;
Num: Integer;
begin
List := TList<Integer>.Create;
List.Add(1);
List.Add(2);
List.Add(3);
List.Add(4);
List.Add(5);
//3未満の要素を飛ばす
for Num in List.SkipWhile(
function(X: Integer): Boolean
begin
Exit(X < 3);
end
) do
WriteLn(Num);
//=> 3 4 5
■ToListメソッド、ToSetメソッド
var
List: TList<Integer>;
Num: Integer;
iList: IList<Integer>;
iSet: ISet<Integer>;
begin
List := TList<Integer>.Create;
List.Add(1);
List.Add(2);
List.Add(3);
List.Add(1);
List.Add(2);
iList := List.ToList;
for Num in Ilist do WriteLn(Num);
//=> 1 2 3 1 2
iSet := List.ToSet;
for Num in iSet do WriteLn(Num);
//=> 1 2 3
■Fillメソッド
Fillメソッドは指定した要素を指定した数だけ持つコレクションを作成します。
var
Num: Integer;
begin
for Num in TList<Integer>.Fill(0, 3) do
WriteLn(Num);
//=> 0 0 0
Pingback: delphi-collを使ってみる(1) « 山本隆の開発日誌
Pingback: delphi-collを使ってみる(3) « 山本隆の開発日誌