您的位置:首页 > 其它

详测 Generics Collections TList (9): BinarySearch

2014-09-26 15:40 519 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: