[Delphi (Object Pascal)] Delphi XE中泛型数组的使用范例 →→→→→进入此内容的聊天室

来自 , 2019-09-10, 写在 Delphi (Object Pascal), 查看 130 次.
URL http://www.code666.cn/view/a6ce9144
  1.  
  2. uses Generics.Collections, Generics.Defaults;
  3.  
  4. {测试 TArray 的 Sort 方法}
  5. procedure TForm1.Button1Click(Sender: TObject);
  6. var
  7.   arr: TArray<string>; //同 array of string
  8.   s: string;
  9. begin
  10.   SetLength(arr, 5);
  11.   arr[0] := 'aaa';
  12.   arr[1] := 'AAA';
  13.   arr[2] := '111';
  14.   arr[3] := '333';
  15.   arr[4] := '222';
  16.  
  17.   TArray.Sort<string>(arr);
  18.   Memo1.Clear;
  19.   for s in arr do Memo1.Lines.Add(s); //111 222 333 AAA aaa
  20. end;
  21.  
  22. {测试 TArray 的 BinarySearch 方法}
  23. procedure TForm1.Button2Click(Sender: TObject);
  24. var
  25.   arr: TArray<Integer>; //同 array of Integer
  26.   i,n: Integer;
  27. begin
  28.   SetLength(arr, 5);
  29.   for i := 0 to Length(arr) - 1 do arr[i] := Integer(Sqr(i));
  30.   Memo1.Clear;
  31.   for i := Low(arr) to High(arr) do Memo1.Lines.Add(IntToStr(arr[i]));
  32.  
  33.   if TArray.BinarySearch<Integer>(arr, 4, n) then ShowMessage(IntToStr(n)); //2, 也就是第三个
  34.  
  35.   if TArray.BinarySearch<Integer>(arr, 5, n) then ShowMessage(IntToStr(n)); //找不到时, 不能根据 n 的值判断
  36. end;
  37.  
  38. {自定义排序器}
  39. procedure TForm1.Button3Click(Sender: TObject);
  40. var
  41.   arr: TArray<Integer>;
  42.   num: Integer;
  43. begin
  44.   SetLength(arr, 5);
  45.   arr[0] := 2;
  46.   arr[1] := 4;
  47.   arr[2] := 3;
  48.   arr[3] := 1;
  49.   arr[4] := 5;
  50.  
  51.   TArray.Sort<Integer>(arr, TComparer<Integer>.Construct(
  52.     function (const a,b: Integer): Integer
  53.     begin
  54.       Result := b - a;
  55.     end
  56.   ));
  57.   Memo1.Clear;
  58.   for num in arr do Memo1.Lines.Add(IntToStr(num)); //5 4 3 2 1
  59. end;
  60. //delphi/9000

回复 "Delphi XE中泛型数组的使用范例"

这儿你可以回复上面这条便签

captcha