Remove duplicate elements

From Rosetta Code
Revision as of 13:58, 24 January 2007 by rosettacode>AllanBz (reworded task)
Task
Remove duplicate elements
You are encouraged to solve this task according to the task description, using any language you may know.

Given an Array, derive an Array containing only the unique elements; that is, derive an array in which all duplicate elements are removed.


C++

C++ with STL using Microsoft Visual C++ 2005

 using namespace std;
 int data[] = {1, 2, 3, 2, 3, 4};
 vector<int> ary(data, data + 6);
 sort(ary.begin(), ary.end());
 ary.erase(unique(ary.begin(), ary.end()), ary.end());

Java

 //Using Java 1.5/5.0
 Object[] data = new Object[] {1, 2, 3, "a", "b", "c", 2, 3, 4, "b", "c", "d"};
 Set uniqueSet = new HashSet(Arrays.asList(data));
 Object[] unique = uniqueSet.toArray();

Perl

Interpeter: Perl

my %hash;
my @list = (1, 2, 3, 'a', 'b', 'c', 2, 3, 4, 'b', 'c', 'd');
@hash{@list} = 1;
# the keys of %hash now contain the unique list
my @unique_list = keys(%hash);

Python

 data = [1, 2, 3, 'a', 'b', 'c', 2, 3, 4, 'b', 'c', 'd']

Using sets

 unique = list(set(data))

See also http://www.peterbe.com/plog/uniqifiers-benchmark and http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52560

Ruby

 ary = [1,1,2,1,'redundant',[1,2,3],[1,2,3],'redundant']
 uniq_ary = ary.uniq
 # => [1, 2, "redundant", [1, 2, 3]]