delphi-collを使ってみる(2)

前回の記事「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

コメント

  1. Pingback: delphi-collを使ってみる(1) « 山本隆の開発日誌

  2. Pingback: delphi-collを使ってみる(3) « 山本隆の開発日誌

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください