MapObject Object转为MapString Object使用stream流
可以使用Java 8中的Stream API来将Map<Object, Object>转换为Map<String, Object>。具体实现如下:
Map<Object, Object> map1 = new HashMap<>();
map1.put("key1", "value1");
map1.put("key2", 2);
Map<String, Object> map2 = map1.entrySet().stream()
.collect(Collectors.toMap(entry -> entry.getKey().toString(),
Map.Entry::getValue));
上述代码中,我们首先创建了一个Map<Object, Object>对象map1,并向其中添加了一些数据。然后,我们通过调用entrySet()方法将该Map对象转换为一个Set集合,每个元素都是一个Map.Entry对象。接着,我们使用Stream API对该Set集合进行流式处理,通过调用Collectors.toMap()方法将其转换为一个Map<String, Object>对象map2。
在Collectors.toMap()方法中,我们首先使用entry.getKey().toString()将Map.Entry对象的键转换为String类型,然后使用Map.Entry::getValue引用方法获取该Map.Entry对象的值,最终得到一个新的Map<String, Object>对象map2。
需要注意的是,如果原始Map中存在两个或多个键相同的元素,上述代码将会抛出IllegalStateException异常。这种情况下,我们可以在Collectors.toMap()方法中提供一个合并函数来解决该问题。例如:
Map<Object, Object> map1 = new HashMap<>();
map1.put("key1", "value1");
map1.put(1, "value2");
map1.put(2, "value3");
Map<String, Object> map2 = map1.entrySet().stream()
.collect(Collectors.toMap(entry -> entry.getKey().toString(),
Map.Entry::getValue,
(v1, v2) -> v1));
在上述代码中,我们向原始Map中添加了三个元素,其中键分别为"key1"、1和2。由于其中存在两个键为整数1的元素,因此我们在Collectors.toMap()方法中提供了一个合并函数(v1, v2) -> v1,表示在出现键冲突时,选择保留较早出现的元素。最终,我们得到了一个新的Map<String, Object>对象map2,其中包含了所有元素的键和值
原文地址: https://www.cveoy.top/t/topic/gDlL 著作权归作者所有。请勿转载和采集!