Can a set have duplicate elements?

前端 未结 4 1894
醉酒成梦
醉酒成梦 2021-02-07 14:25

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

4条回答
  •  被撕碎了的回忆
    2021-02-07 15:00

    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 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].

提交回复
热议问题