[英]How to convert Map to Java.util.Properties?
有沒有辦法從Map
轉換為java.util.Properties
?
例如,我想將以下Map
轉換為java.util.Properties
:
Map("x" -> 24, "y" -> 25, "z" -> 26)
請嘗試以下方法
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}
您可以使用Properties
putAll
,但它需要Java的映射,因此您還需要進行轉換:
import scala.collection.JavaConverters._
val m = Map("x" -> 24, "y" -> 25, "z" -> 26)
val properties = new Properties()
properties.putAll(m.mapValues(_.toString).asJava)
正如MarioGalic在評論中注意到的,存儲在屬性中的所有值都應該是字符串(即使理論上可以存儲任何對象)。 來自docs:
由於Properties繼承自Hashtable,因此put和putAll方法可以應用於Properties對象。 強烈建議不要使用它們,因為它們允許調用者插入其鍵或值不是字符串的條目。 應該使用setProperty方法。 如果在包含非String鍵或值的“受損”Properties對象上調用store或save方法,則調用將失敗。 同樣,如果在包含非String鍵的“受損”Properties對象上調用propertyNames或list方法,則調用將失敗。
因此,您可能需要調用mapValues(_.toString)
:
properties.putAll(m.mapValues(_.toString).asJava)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.