详测 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.
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
- 详测 Generics Collections TList (9): BinarySearch
- 详测 Generics Collections TList (6): Reverse、TrimExcess
- 十七、详测 Generics Collections TList (8): Sort
- 详测 Generics Collections TList (7): Items、Contains
- 详测 Generics Collections TList (8): Sort
- 十九、详测 Generics Collections TList (10): OnNotify 事件
- 二十、详测 Generics Collections TList (11): Create
- 详测 Generics Collections TList (10): OnNotify 事件
- 二、Delphi 2009 泛型容器单元(Generics.Collections)[1]: TList<T>
- 详测 Generics Collections TList (11): Create
- 十、详测 Generics Collections TList (1): Add、Clear、Count、Capacity
- Delphi 2009 泛型容器单元(Generics.Collections)[1]: TList<T>
- 十一、详测 Generics Collections TList (2): First、Last、IndexOf、LastIndexOf
- 详测 Generics Collections TList (1): Add、Clear、Count、Capacity
- 十二、详测 Generics Collections TList (3): Insert、Delete、Remove、Extract
- 详测 Generics Collections TList (2): First、Last、IndexOf、LastIndexOf
- 十三、详测 Generics Collections TList (4): AddRange、InsertRange、DeleteRange
- [导入]Delphi 2009 泛型容器单元(Generics.Collections)[1]: TList
- 详测 Generics Collections TList (3): Insert、Delete、Remove、Extract