加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala中“HashSet”和“Set”的区别?

发布时间:2020-12-16 09:35:52 所属栏目:安全 来源:网络整理
导读:我对Scala的HashSet和Set类型感到非常困惑,因为他们似乎都做同样的事情。 他们有什么区别? 在Java中是一样吗? 在我的引用中,它表示HashSet是一个“显式集类”(与Set相比)。这意味着什么? 解决方法 Scala的可变和不可变的HashSet实现是可以实例化的具体
我对Scala的HashSet和Set类型感到非常困惑,因为他们似乎都做同样的事情。

>他们有什么区别?
>在Java中是一样吗?
>在我的引用中,它表示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)的语法糖。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读