我被问到一个对我的课程作业来说有点模棱两可的问题。
The array of strings is regarded as a set, i.e. unordered.
我不确定是否需要从此数组中删除重复项?
我试过谷歌搜索,但一个地方会告诉我与下一个地方不同的东西。任何帮助,将不胜感激。
我被问到一个对我的课程作业来说有点模棱两可的问题。
The array of strings is regarded as a set, i.e. unordered.
我不确定是否需要从此数组中删除重复项?
我试过谷歌搜索,但一个地方会告诉我与下一个地方不同的东西。任何帮助,将不胜感激。
来自维基百科的集合(数学)
集合是定义明确且不同的对象的集合。
也许混淆源于这样一个事实,即集合不依赖于其元素的显示方式。如果据称其元素被重复或重新排列,则集合保持不变。
因此,如果元素已经属于某个元素,我所知道的编程语言不会将元素放入集合中,或者如果它已经存在,它们会替换它,但绝不允许重复。
编程语言示例
让我举几个不同编程语言的例子。
在 Python 中
Python 中的集合被定义为“唯一元素的无序集合”。如果你声明一个这样的集合,a = {1,2,2,3,4}
它只会添加2
一次到集合中。
如果你这样做print(a)
,输出将是{1,2,3,4}
.
哈斯克尔
在 Haskell 中,集合的插入操作被定义为:“[...] 如果集合已经包含一个等于给定值的元素,则将其替换为新值。”
因此,如果您这样做:let a = fromList([1,2,2,3,4])
,如果您打印a
到主输出,它将呈现[1,2,3,4]
.
爪哇
在 Java 中,集合被定义为:“一个不包含重复元素的集合。”。它的添加操作被定义为:“如果指定的元素尚不存在,则将其添加到此集合中 [...] 如果此集合已包含该元素,则调用使集合保持不变”。
Set<Integer> myInts = new HashSet<>(asList(1,2,2,3,4));
System.out.println(myInts);
与其他示例一样,此代码将输出[1,2,3,4]
.
一个集合的定义不能有重复的元素。允许重复元素的正确结构是Multiset 或 Bag:
在数学中,多重集(或袋子)是对集合概念的概括,与集合不同,它允许多重集元素的多个实例。例如,{a, a, b} 和 {a, b} 是不同的多重集,尽管它们是相同的集。然而,顺序并不重要,所以 {a, a, b} 和 {a, b, a} 是同一个多重集。
编程中一个非常常见且有用的 Multiset 示例是对象值的集合:
values({a: 1, b: 1}) //=> Multiset(1,1)
这里的值是无序的,但不能减少到Set(1)
例如破坏对象值的迭代。
此外,引用链接的维基百科文章(参见那里的参考资料):
多重集已成为数据库中的重要工具。[18][19][20] 例如,多集通常用于在数据库系统中实现关系。多重集在计算机科学中也发挥着重要作用。
让 A={1,2,2,3,4,5,6,7,...} 和 B={1,2,3,4,5,6,7,...} 那么任何元素A 在 B 中,B 中的任何元素在 A ==> A 包含 B 且 B 包含 A ==> A=B。所以当然集合可以有重复的元素,只是具有重复元素的集合最终会与没有重复元素的集合完全相同。
“集合是不包含重复元素的可迭代对象。” https://docs.scala-lang.org/overviews/collections/sets.html