• 详测 Generics Collections TList (9): BinarySearch


    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    uses Generics.Collections, Generics.Defaults;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      List: TList<string>;
      num: Integer;
      b: Boolean;
      Comparer: IComparer;
    begin
      List := TList<string>.Create();
      List.AddRange(['123', 'ABB', 'ABC']);
    
      {默认的查找需要完全吻合才能找到}
      if List.BinarySearch('ABC', num) then ShowMessage(IntToStr(num)); {2}
    
      {这里自定义个对比器, 只要第一个字符吻合就算找到了}
      Comparer := TComparer<string>.Construct(
        function(const s1,s2: string): Integer
        begin
          Result := Ord(s1[1]) - Ord(s2[1]);
        end);
    
      if List.BinarySearch('ABC', num, Comparer) then ShowMessage(IntToStr(num)); {1}
          
      List.Free;
    end;
    
    end.
    
  • 相关阅读:
    递归获取指定盘符下的所有文件及文件夹
    单例模式和多线程有没有关系?
    eclipse启动tomcat时设置端口
    dozer转化对象
    枚举
    dubbo
    json
    配网失败问题
    esp_err_t esp_event_loop_init(system_event_cb_t cb, void *ctx);
    base64编码
  • 原文地址:https://www.cnblogs.com/del/p/1580728.html
Copyright © 2020-2023  润新知