关于 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 映射,然后执行操作并返回它,但我找不到任何有关在 Java 中将不可变 scala 映射转换为可变 scala 映射的文档或示例。
非常感谢任何帮助。
最佳答案
您可以尝试直接使用scala不可变映射:
return m
.$plus(Tuple2.apply(k1, v1))
.$minus(k2)
正如你所看到的,语法并不漂亮,有时 IDE 在 java 中使用 scala 方法时会提示,但如果你想避免来回转换,我没有看到其他选项。
关于java - 给定一个 scala 不可变映射,如何在 Java 中插入/删除条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47102774/