关于Scala / Java可变/不可变转换有很多类似的问题,但我找不到这个确切的问题 .
我有一个Java方法,它使用scala.collection.immutable.Map m
. 我需要插入/删除一些条目,然后返回新的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();
但是必须在 Map 类型之间进行两次转换是非常难看的 . 我认为理想的解决方案是将不可变的scala映射转换为可变的scala映射,然后执行操作并返回它,但是我找不到任何关于将不可变的scala映射转换为Java中的可变scala映射的文档或示例 .
任何帮助深表感谢 .
1 回答
您可以尝试直接使用scala immutable map:
您可以看到语法并不漂亮,有时IDE在java中使用scala方法时会抱怨,但如果您想避免来回转换,我看不到其他选项 .