返回介绍

数学基础

统计学习

深度学习

工具

Scala

六、Java 和 Scala 集合

发布于 2023-07-17 23:38:22 字数 2355 浏览 0 评论 0 收藏 0

  1. Java 的集合与 Scala 集合的一个重要区别是:Scala 类库的集合更加强调不可变集合,并提供了更多将集合变成新集合的操作。

  2. ScalaJavaConversions 对象中提供了所有主要的集合类型和 Java 集合之间的隐式转换。具体而言,你可以找到如下类型之间的双向转换:

    
    
    xxxxxxxxxx
    Iterator <==> java.util.Iterator Iterator <==> java.util.Enumeration Iterable <==> java.lang.Iterable Iterable <==> java.util.Collection mutable.Buffer <==> java.util.List mutable.Set <==> java.util.Set mutable.Map <==> java.util.Map

    要允许这些转换,你只需要做一次导入:

    
    
    xxxxxxxxxx
    import collection.JavaConversions._

    现在你就可以拥有在 Scala 集合和对应的 Java 集合之间自动相互转换的能力了。

    Scala 内部,这些转换是通过一个Wrapper 对象,该 Wrapper 对象将所有操作都转发到底层集合对象来实现的。因此集合在JavaScala 之间转换时,并不会做拷贝。

    一个有趣的性质是:如果你完成一次往返的转化,比如将 Java 类型转换成对应的 Scala 类型,然后再转换回 Java 类型,你得到的还是最开始的那个集合对象。

  3. 还有其它一些常用的 Scala 集合可以被转换成 Java 类型,但是并没有反方向的转化与之对应。

    这些转换有:

    
    
    xxxxxxxxxx
    Seq ==> java.util.List mutable.Seq ==> java.uitl.List Set ==> java.util.Set Map ==> java.util.Map

    由于 Java 并不在类型上区分可变和不可变的集合,从 collection.immutable.List 转换成 java.util.List 后,如果再尝试对其进行原地修改操作,则会抛出 UnsupportedOperationException 异常。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文