Yar*_*evi 4 java collections interface set
我对Java中的这两个接口有疑问.设置扩展集合,但不添加任何内容.它们完全一样.我在这里错过了什么吗?
来自以下文件Collection:
集合表示一组对象,称为其元素.有些集合允许重复元素而其他集合则不允许.有些是订购的,有些是无序的.
来自以下文件Set:
不包含重复元素的集合.更正式地,集包含没有对元件
e1和e2使得e1.equals(e2),和至多一个null元件.正如其名称所暗示的,该界面模拟数学集抽象.
这应该澄清a Set和a(更通用的接口)之间的区别Collection.
好问题.我认为明确具有a概念的接口与a Set的概念相比的主要目的Collection是实际上正式区分概念.假设您正在编写方法
void x(Collection<?> c);
Run Code Online (Sandbox Code Playgroud)
你不会对你想要得到什么参数有同样的想法,就像你在写作一样
void x(Set<?> s);
Run Code Online (Sandbox Code Playgroud)
第二种方法期望Collections最多包含一次元素(即Sets).这是一个很大的语义差别第一种方法,它并不关心它是否收到Sets,Lists或任何其他类型的Collection
如果你仔细观察,Set方法的Javadoc 也是不同的,明确地显示了在谈论Collection或讨论时发挥作用的不同概念.Set