Scala底层是否使用Java集合实现?是否拥有独立的集合实现?
Scala集合实现问题解答
首先给出明确结论:Scala确实拥有独立于Java核心代码库的独有集合实现,你之前的信息判断是准确的。
- 核心实现完全独立
Scala的标准集合全部归属scala.collection包体系,分不可变(immutable)、可变(mutable)两大分支,常用的List、Vector、HashMap、Set等集合的核心逻辑均为Scala团队独立开发,没有复用JDKjava.util包下的集合核心代码,专门适配Scala的函数式语法、类型系统设计,和Java集合的内部实现逻辑完全不同。
而Kotlin的集合本质是给JDK集合加了一层编译期的语义封装,运行时还是用的JDK原生实现,这一点和Scala的设计逻辑有本质差异。 - 互转逻辑佐证独立性
Scala和Java集合的互相转换是通过CollectionConverters(旧版为JavaConverters)工具类实现的,本质是为原生集合套一层适配对方接口的包装器,不会修改双方的底层数据结构,也不存在代码层面的共享关系,进一步证明二者是完全独立的两套体系。 - 特殊场景说明
如果在Scala代码中主动调用java.util包下的集合类属于跨语言调用场景,不属于Scala标准集合库的范畴,和Scala自有集合的独立性不冲突。
内容的提问来源于stack exchange,提问作者Adalbert
相关产品推荐
相关产品推荐

