我有一张地图
Map<Object, Map<String, Object>> salesReportForSoldPropertyMap= salesReportForSoldProperty.stream().collect(Collectors.toMap(tags -> tags.get("E"), Function.identity()));
当我将Map转换为JSON时,我得到了这个
{
"Sold Promissory Buyer":
{
"A": 2616100,
"B": 2616100,
"C": 31,
"D": "Sold Promissory Buyer"
},
"Auction":
{
"A": 101322143.24,
"B": 50243301.2,
"C": 569,
"D": "Auction"
},
"Sold Third Party":
{
"A": 72000,
"B": 93900,
"C": 1,
"D": "Sold Third Party"
}
}
但在这里我有一个问题,我不想要白色空间和&#39; - &#39;在JSON密钥中。那么我们可以通过JAVA Stream API来解决它,所以它会给我没有空格的地图键和&#39; - &#39 ;?喜欢关键&#34;出售第三方&#34;应该是&#34; SoldThirdParty&#34;
答案 0 :(得分:2)
您可以通过toMap
收集器
Map<String, Map<String, Object>> result = input.entrySet().stream()
.collect(Collectors.toMap(e -> e.getKey().toString().replaceAll("[- ]", ""),
e -> e.getValue()));
请注意,原始密钥是您需要通过强制转换((String)e.getKey()
)或调用toString()
将其转换为字符串的对象。
请注意,在应用替换后,不同的键可能会变得相同。例如,如果您的原始地图包含"A-B"
和"AB"
键,则两者都将转换为"AB"
。在这种情况下,Collectors.toMap
会抛出IllegalStateException
。要专门处理此类情况,您可以将合并函数指定为第三个toMap
参数。