簡體   English   中英

如何將Map轉換為Java.util.Properties?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM