• 详测 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([1, 2, 3]);
    
      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([2, 3, 1]);
    
      List.Sort; {会根据建立时指定的排序器排序}
    
      str := '';
      for i in List do str := str + IntToStr(i) + ' ';
      ShowMessage(str); {3 2 1 }
    
      List.Free;
    end;
    
    end.
    
  • 相关阅读:
    JSON的序列化与还原
    正则表达式的一些基础
    跨域二三事
    与Web服务器通信
    与 Web 服务器通信
    代码重构
    构造函数与各种继承方法特点
    this指向问题——严格、非严格模式,事件处理程序
    《JavaScript设计模式与开发实践》学习笔记——单例模式
    Git常用命名及常见操作流程
  • 原文地址:https://www.cnblogs.com/del/p/1580845.html
Copyright © 2020-2023  润新知