我被问到一个对我的课程有点模棱两可的问题.
The array of strings is regarded as a set, i.e. unordered.
Run Code Online (Sandbox Code Playgroud)
我不确定是否需要从此数组中删除重复项?
我试过谷歌搜索,但有一个地方会告诉我一些不同的东西.任何帮助,将不胜感激.
Edw*_*rzo 29
来自维基百科(数学)
集合是定义明确且不同的对象的集合.
也许混淆源于一个集合不依赖于其元素显示方式的事实.如果据称重复或重新排列其元素,则集合保持不变.
因此,我知道的编程语言如果元素已经属于它,则不会将元素放入集合中,或者如果元素已经存在则会替换它,但是永远不会允许复制.
编程语言示例
让我举几个不同编程语言的例子.
在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的
在Java中,集合定义为:" 不包含重复元素的集合.".其添加操作定义为:"如果指定的元素尚未存在,则将其添加到此集合中[...]如果此集合已包含该元素,则调用将保持集合不变 ".
Set<Integer> myInts = new HashSet<>(asList(1,2,2,3,4));
System.out.println(myInts);
Run Code Online (Sandbox Code Playgroud)
与其他示例一样,此代码将输出[1,2,3,4].
小智 7
设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. 所以当然集合可以有重复的元素,只是具有重复元素的元素最终与没有重复元素的元素完全相同.
一个集合不能仅仅通过它的定义就具有重复的元素。允许重复元素的正确结构是Multiset 或 Bag:
在数学中,多重集(或包)是集合概念的概括,与集合不同,它允许多重集元素的多个实例。例如,{a, a, b} 和 {a, b} 是不同的多重集,尽管它们是相同的集合。但是,顺序无关紧要,因此 {a, a, b} 和 {a, b, a} 是相同的多重集。
编程中 Multiset 的一个非常常见且有用的示例是对象值的集合:
values({a: 1, b: 1}) //=> Multiset(1,1)
Run Code Online (Sandbox Code Playgroud)
这里的值是无序的,但不能减少到Set(1)例如破坏对象值的迭代。
此外,引用链接的维基百科文章(参见那里的参考资料):
多重集已成为数据库中的重要工具。 [18][19][20] 例如,多集经常用于在数据库系统中实现关系。Multisets 在计算机科学中也扮演着重要的角色。
| 归档时间: |
|
| 查看次数: |
47722 次 |
| 最近记录: |