Scala中“HashSet”和“Set”的区别?
发布时间:2020-12-16 09:35:52 所属栏目:安全 来源:网络整理
导读:我对Scala的HashSet和Set类型感到非常困惑,因为他们似乎都做同样的事情。 他们有什么区别? 在Java中是一样吗? 在我的引用中,它表示HashSet是一个“显式集类”(与Set相比)。这意味着什么? 解决方法 Scala的可变和不可变的HashSet实现是可以实例化的具体
我对Scala的HashSet和Set类型感到非常困惑,因为他们似乎都做同样的事情。
>他们有什么区别? 解决方法
Scala的可变和不可变的HashSet实现是可以实例化的具体类。例如,如果你明确要求一个新的scala.collection.immutable.HashSet,你将总是得到一个由hash trie实现的集合。还有其他集合实现,例如使用列表的ListSet。
Set是一个trait,所有的集合实现都扩展(而在Java中,Set是一个接口)。 Set也是一个伴随对象* with apply **方法。当您调用Set(…)时,您将调用此工厂方法并获取某种Set的返回值。它可能是一个HashSet,但可以是一些其他的实现。根据2,不可变集的默认实现具有空集合的特殊表示,集合大小可达4个。不可变集大小5及以上,可变集集全部使用hashSet。 *在Scala中,您不必使用静态类方法,就可以创建一个与您的类或特征名称相同的单例对象。这被称为伴随对象,您在其上定义的方法可以称为ObjectName.method(),类似于在Java中调用静态方法。 ** Set(x)是Set.apply(x)的语法糖。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |