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.
详测 Generics Collections TList (9): BinarySearch
最新推荐文章于 2021-08-06 08:50:18 发布