Welcome to the new DelphiDabbler Code Library Documentation.

This is a new site that's currently running on alpha code. There are going to be bugs. If you discover any, please report them on the site's issues page (GitHub account required). Thanks.

Warning: Many URLs are going to change. Refer to the README file to discover which library project's documentation has been completed.

DeDup<T> class method

Project: Array Utilities Unit

Unit: DelphiDabbler.Lib.ArrayUtils

Record: TArrayUtils

Applies to: ~>0.1

class function DeDup<T>(const A: array of T;
  const AEqualityComparer: TEqualityComparison<T>): TArray<T>;
  overload; static;

class function DeDup<T>(const A: array of T;
  const AEqualityComparer: IEqualityComparer<T>): TArray<T>;
  overload; static;

class function DeDup<T>(const A: array of T): TArray<T>;
  overload; static;

Description

Returns a copy of an array that contains no duplicated elements.

The copy is a shallow copy, so any references within the resulting array are the same as those in the initial array.

Parameters:

Returns:

Note

If a deep copy of the de-duplicated array is required then pass the return value of DeDup<T> to the deep copying overload of Copy<T> along with a suitable TCloner<T> implementation.

Example

To de-duplicate a string array use the following code. The code uses the equality comparer function overloaded version of DeDup<T>.

procedure DeDup_Eg;
var
  A, B, Expected: TArray<string>;
begin
  A := TArray<string>.Create('Foo', 'Bar', 'foo', 'Foo', 'BAR');
  B := TArrayUtils.DeDup<string>(A, SameText);
  Expected := TArray<string>.Create('Foo', 'Bar');
  Assert(TArrayUtils.Equal<string>(Expected, B, SameText));
end;

See Also