Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can a set have duplicate elements?

Tags:

set

I have been asked a question that is a little ambiguous for my coursework.

The array of strings is regarded as a set, i.e. unordered.

I'm not sure whether I need to remove duplicates from this array?

I've tried googling but one place will tell me something different to the next. Any help would be appreciated.

like image 588
dev6546 Avatar asked Apr 04 '12 12:04

dev6546


People also ask

Can a set have duplicate elements in maths?

"A set has no duplicate elements. An element is either a member of a set or not. It cannot be in the set twice."

How many duplicate elements can you have in a set?

From what I've read (I'm no mathematician), a set can have identical elements within it when it is defined, but when working with sets or comparing sets, the duplicates are ignored. So {1, 1, 2} is the same as {1, 2} is the same as {2, 1}. A multiset is where multiple instances of an element matters.

Is duplicate data is allowed in set?

Set is not allowed to store duplicated values by definition. If you need duplicated values, use a List. As specified on the documentation of the interface, when you try to add a duplicated value, the method add returns false, not an Exception.

Why are duplicates not allowed in sets?

The meaning of "sets do not allow duplicate values" is that when you add a duplicate to a set, the duplicate is ignored, and the set remains unchanged. This does not lead to compile or runtime errors: duplicates are silently ignored. Set is implemented like that to avoid duplication.


1 Answers

From Wikipedia in Set (Mathematics)

A set is a collection of well defined and distinct objects.

Perhaps the confusion derives from the fact that a set does not depend on the way its elements are displayed. A set remains the same if its elements are allegedly repeated or rearranged.

As such, the programming languages I know would not put an element into a set if the element already belongs to it, or they would replace it if it already exists, but would never allow a duplication.

Programming Language Examples

Let me offer a few examples in different programming languages.

In Python

A set in Python is defined as "an unordered collection of unique elements". And if you declare a set like a = {1,2,2,3,4} it will only add 2 once to the set.

If you do print(a) the output will be {1,2,3,4}.

Haskell

In Haskell the insert operation of sets is defined as: "[...] if the set already contains an element equal to the given value, it is replaced with the new value."

As such, if you do this: let a = fromList([1,2,2,3,4]), if you print a to the main ouput it would render [1,2,3,4].

Java

In Java sets are defined as: "a collection that contains no duplicate elements.". Its add operation is defined as: "adds the specified element to this set if it is not already present [...] If this set already contains the element, the call leaves the set unchanged".

Set<Integer> myInts = new HashSet<>(asList(1,2,2,3,4));
System.out.println(myInts);

This code, as in the other examples, would ouput [1,2,3,4].

like image 138
Edwin Dalorzo Avatar answered Sep 18 '22 09:09

Edwin Dalorzo