【问题标题】:Given a scala immutable map, how to insert/remove entries in Java给定一个 scala 不可变映射,如何在 Java 中插入/删除条目
【发布时间】:2018-04-16 14:22:35
【问题描述】:

关于 Scala/Java 可变/不可变转换有很多类似的问题,但我找不到这个确切的问题。

我有一个使用 scala.collection.immutable.Map m 的 Java 方法。我需要插入/删除一些条目,然后返回新的 scala 映射(不可变或可变——没关系)。

目前我正在做以下事情:

java.util.HashMap<T1, T2> javaMap = new java.util.HashMap<>(
                (Map<T1, T2>) JavaConverters.mapAsJavaMapConverter(m).asJava());  
javaMap.put(k1, v1);
javaMap.remove(k2);
return scala.collection.JavaConverters.mapAsScalaMapConverter(javaMap).asScala();

但是必须在地图类型之间转换两次是非常难看的。我认为理想的解决方案是将不可变的 scala 映射转换为可变的 scala 映射,然后执行操作并返回它,但我找不到任何关于将不可变的 scala 映射转换为 Java 中的可变 scala 映射的文档或示例。

非常感谢任何帮助。

【问题讨论】:

    标签: java scala type-conversion mapping


    【解决方案1】:

    您可以尝试直接使用 scala 不可变映射:

    return m
        .$plus(Tuple2.apply(k1, v1))
        .$minus(k2)
    

    语法并不如您所见,有时 IDE 在 java 中使用 scala 方法时会抱怨,但如果您想避免来回转换,我看不到其他选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      相关资源
      最近更新 更多