如何将属性文件中的空值添加到 Map



我有一个properties文件,其内容如下

test=uri=someURI,uname=username,pwd=

参数用逗号分隔,键和值用=我正在使用ResourceBundle.getBundle("fileName")来读取文件,并使用getString("test")方法来读取test的条目。

我在这里要做的是使用以下方法在 Map 中获取由=分隔的字符串。

public static Map<String, String> configMap(String entry) {
return Arrays.stream(rb.getString(entry).split(",")).map(e -> e.split("="))
.collect(Collectors
.toMap(keyValue -> keyValue[0].trim(), keyValue -> keyValue[1].trim(), (a, b) -> b));
}

不过,这些方法的工作方式很奇怪。在属性文件中,如果我分配一个空格作为pwd的值,它可以正常工作,但是如果我不给pwd分配任何内容,甚至没有空格,它会给我以下错误

java.lang.ArrayIndexOutOfBoundsException: 1

地图也需要接受空值,我该如何实现?

您可以检查keyValue数组的长度,如果它没有第二个元素 - 在Map中放置一个空String

不幸的是,使用Collectors.toMap()时,您无法在Map中输入null值。

return Arrays.stream(rb.getString(entry).split(",")).map(e -> e.split("="))
.collect(Collectors
.toMap(keyValue -> keyValue[0].trim(), 
keyValue -> keyValue.length > 1 ? keyValue[1].trim() : "", 
(a, b) -> b));

相关内容

  • 没有找到相关文章

最新更新