Map<Object, Object> 转 Map<String, Object> 同时顺序不变
时间: 2023-11-04 11:04:20 浏览: 83
可以使用Java 8的Stream API和Collectors.toMap()方法来实现这个转换,同时保持顺序不变。具体实现代码如下:
```java
Map<Object, Object> originalMap = new LinkedHashMap<>();
originalMap.put("key1", "value1");
originalMap.put(2, "value2");
originalMap.put("key3", 3);
Map<String, Object> convertedMap = originalMap.entrySet().stream()
.collect(Collectors.toMap(
entry -> String.valueOf(entry.getKey()),
Map.Entry::getValue,
(v1, v2) -> v1,
LinkedHashMap::new
));
```
在上述代码中,我们首先将原始的Map对象转换成一个包含Map.Entry对象的流,然后使用Collectors.toMap()方法将其转换成一个新的Map对象。其中,第一个参数是键的转换函数,将原始Map的键转换成字符串类型;第二个参数是值的映射函数,直接返回原始Map中的值;第三个参数是合并函数,当出现键冲突时,保留第一个值;第四个参数是指定新Map的类型,这里我们使用LinkedHashMap来保持顺序不变。
执行完上述代码后,convertedMap就是一个新的Map对象,类型为Map<String, Object>,同时保持了原始Map的顺序不变。
阅读全文