java8 Map<Object, Object> 转 Map<String,Object>
时间: 2023-10-24 15:19:32 浏览: 64
可以使用Java 8的流操作和Lambda表达式来实现Map<Object, Object> 转 Map<String, Object>。具体实现如下:
```
Map<Object, Object> oldMap = new HashMap<>();
oldMap.put(1, "one");
oldMap.put(2, "two");
oldMap.put(3, "three");
Map<String, Object> newMap = oldMap.entrySet().stream()
.collect(Collectors.toMap(entry -> entry.getKey().toString(),
Map.Entry::getValue));
System.out.println(newMap);
```
这里我们使用了`entrySet()`方法获取到Map中所有的键值对,然后使用`stream()`方法将其转化为一个流,接着使用`Collectors.toMap()`方法将流中的元素转化为一个新的Map<String, Object>。在转化的过程中,我们使用了Lambda表达式将每个键值对的键转化为String类型,将每个键值对的值保持不变。最后我们打印出新的Map。
输出结果为:{1=one, 2=two, 3=three}。
相关问题
Java8 Map<String, Object> map转成Map<String,String>
在Java 8中,如果你有一个`Map<String, Object>`类型的映射,想要转换为`Map<String, String>`,你可以通过遍历原始映射并检查每个值是否是字符串来实现。如果值是字符串,直接将其添加到新映射中;如果不是,你可以选择抛出异常、忽略非字符串值或者提供一个默认处理策略。
下面是一个简单的示例代码片段:
```java
Map<String, String> stringMap = new HashMap<>();
Map<String, Object> objectMap = ... // 原始对象映射
objectMap.forEach((key, value) -> {
if (value instanceof String) {
stringMap.put(key, (String) value);
} else {
// 这里可以处理非字符串的情况
throw new IllegalArgumentException("Value is not a string for key " + key);
// 或者可以选择忽略:
// continue;
// 或者提供默认值:
// stringMap.put(key, "default_string_value");
}
});
```
这样,你就得到了一个新的只包含字符串键值对的`Map<String, String>`。
List<map<string,object>>转成map<string,object>的java代码
假设你有一个 List<Map<String, Object>> 类型的变量 list,可以使用以下代码将其转换为 Map<String, Object> 类型的变量 map:
```java
Map<String, Object> map = new HashMap<>();
for (Map<String, Object> item : list) {
map.putAll(item);
}
```
上述代码会遍历 List 中的每个 Map 对象,然后将其所有键值对添加到新的 Map 对象中,最终返回一个包含所有键值对的 Map 对象。需要注意的是,如果 List 中的多个 Map 对象中存在相同的键,则后面的值会覆盖前面的值。
阅读全文