二十、详测 Generics Collections TList (11): Create

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 
= class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    
procedure Button1Click(Sender: TObject);
    
procedure Button2Click(Sender: TObject);
    
procedure Button3Click(Sender: TObject);
  
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Generics.Collections, Generics.Defaults;

var
  i: Integer;
  str: 
string;

//无参数的建立
procedure TForm1.Button1Click(Sender: TObject);
var
  List: TList
<Integer>;
begin
  List :
= TList<Integer>.Create();

  List.AddRange([
11,22,33]);
  str :
= '';
  
for i in List do str := str + IntToStr(i) + ' ';
  ShowMessage(str); 
{11 22 33 }

  List.Free;
end;

//可以基于另一个列表建立
procedure TForm1.Button2Click(Sender: TObject);
var
  List,ListTmp: TList
<Integer>;
begin
  ListTmp :
= TList<Integer>.Create();
  ListTmp.AddRange([
123]);

  List :
= TList<Integer>.Create(ListTmp);

  str :
= '';
  
for i in List do str := str + IntToStr(i) + ' ';
  ShowMessage(str); 
{1 2 3 }

  ListTmp.Free;
  List.Free;
end;

//可在建立时同时指定排序器
procedure TForm1.Button3Click(Sender: TObject);
var
  List: TList
<Integer>;
  Comparer: IComparer
<Integer>;
begin
  
{建立排序器}
  Comparer :
= TComparer<Integer>.Construct(
    
function(const n1,n2: Integer): Integer
    
begin
      Result :
= n2 - n1;
    
end
  );

  List :
= TList<Integer>.Create(Comparer);
  List.AddRange([
231]);

  List.Sort; 
{会根据建立时指定的排序器排序}

  str :
= '';
  
for i in List do str := str + IntToStr(i) + ' ';
  ShowMessage(str); 
{3 2 1 }

  List.Free;
end;

end.
原文地址:https://www.cnblogs.com/jxgxy/p/1596531.html