如何将Map转换为Java.util.Properties?

时间:2019-06-01 20:49:46

标签: java scala

是否可以将Map转换为java.util.Properties

例如,以下Map我要转换为java.util.Properties

Map("x" -> 24, "y" -> 25, "z" -> 26)

2 个答案:

答案 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)