是否可以将Map
转换为java.util.Properties
?
例如,以下Map
我要转换为java.util.Properties
:
Map("x" -> 24, "y" -> 25, "z" -> 26)
答案 0 :(得分:3)
尝试以下
import java.util.Properties
val m = Map("x" -> 24, "y" -> 25, "z" -> 26)
val properties = new Properties
m.foreach { case (key, value) => properties.setProperty(key, value.toString) }
properties
应输出
res1: java.util.Properties = {x=24, z=26, y=25}
答案 1 :(得分:2)
您可以使用putAll
中的Properties
,但是它需要Java的地图,因此您还需要进行转换:
import scala.collection.JavaConverters._
val m = Map("x" -> 24, "y" -> 25, "z" -> 26)
val properties = new Properties()
properties.putAll(m.asJava)
MarioGalic 在注释中注意到,存储在属性中的所有值都应为字符串(即使理论上可以存储任何对象)。来自文档:
因为属性是从Hashtable继承的,所以put和putAll方法可以应用于Properties对象。强烈建议不要使用它们,因为它们允许调用者插入键或值不是String的条目。应该改用setProperty方法。如果在包含非字符串键或值的“受损” Properties对象上调用store或save方法,则调用将失败。同样,如果在包含非字符串键的“受损” Properties对象上调用propertyNames或list方法,则调用将失败。
因此,您可能需要致电mapValues(_.toString)
:
properties.putAll(m.mapValues(_.toString).asJava)