Object 转 Map
时间: 2023-11-12 12:05:11 浏览: 27
将一个 Object 转换为 Map 可以使用如下代码:
```java
public static <K, V> Map<K, V> objectToMap(Object obj) throws IllegalAccessException {
if (obj == null) {
return null;
}
Map<K, V> map = new HashMap<>();
Field[] declaredFields = obj.getClass().getDeclaredFields();
for (Field field : declaredFields) {
field.setAccessible(true);
map.put((K) field.getName(), (V) field.get(obj));
}
return map;
}
```
这里使用反射获取对象的成员变量,然后将其转换为 Map。需要注意的是,这个方法只能将对象的公共成员变量转换为 Map,而私有成员变量需要使用 `getDeclaredFields()` 方法来获取。
相关问题
Object转 map
要将一个对象(Object)转换为一个 Map 数据结构,你可以使用以下代码:
```javascript
function objectToMap(obj) {
const map = new Map();
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
map.set(key, obj[key]);
}
}
return map;
}
// 示例用法
const obj = { a: 1, b: 2, c: 3 };
const map = objectToMap(obj);
console.log(map);
```
这个 `objectToMap` 函数会遍历对象的属性,并使用 `map.set` 方法将属性名和对应的值存储在 Map 中。最后返回转换后的 Map 对象。
在这个示例中,将 `{ a: 1, b: 2, c: 3 }` 转换为 Map 后,会得到以下结果:
```
Map(3) { 'a' => 1, 'b' => 2, 'c' => 3 }
```
Object转map
将一个 Object 转为 Map,可以使用 Java 8 中的 Stream,具体代码如下:
```
Map<String, Object> map = obj.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
```
其中,obj 为要转换的 Object 对象。这里使用了 Java 8 中的 Stream,对 obj 中的每个键值对进行了映射,然后通过 Collectors.toMap() 方法将映射结果收集到一个 Map 中。
如果 obj 中包含重复的键,可以使用 mergeFunction 参数来指定如何处理冲突,例如:
```
Map<String, Object> map = obj.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v1));
```
上面的代码中,当 obj 中出现重复的键时,保留第一个值。如果要保留第二个值,可以将 mergeFunction 参数改为 (v1, v2) -> v2。