经常在开发中会需要将List<Map<String,Object>>转为List,Object也就是你自己对应的目标对象,因为经常要用,干脆就自己封装了一个,代码示例如下:
假设有一个类:Animal.java
public class Animal {private String name;private int age;public Animal(String name, int age) {this.name = name;this.age = age;}// 省略getter和setter方法@Overridepublic String toString() {return "Animal{" +"name='" + name + '\'' +", age=" + age +'}';}
}
将 List<Map<String, Object>> 转换为 List 类型。接收 Class 类型作为参数,并使用反射来创建指定类的对象:
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class MapListToObjectListConverter {public static <T> List<T> convertList(List<Map<String, Object>> listOfMaps, Class<T> clazz) {List<T> resultList = new ArrayList<>();for (Map<String, Object> map : listOfMaps) {try {Constructor<T> constructor = clazz.getConstructor(String.class, int.class);String name = (String) map.get("name");int age = (int) map.get("age");T instance = constructor.newInstance(name, age);resultList.add(instance);} catch (NoSuchMethodException | InstantiationException |IllegalAccessException | InvocationTargetException e) {e.printStackTrace();}}return resultList;}public static void main(String[] args) {// 假设这是从其他地方得到的List<Map<String, Object>>List<Map<String, Object>> listOfMaps = new ArrayList<>();Map<String, Object> map1 = Map.of("name", "Lion", "age", 5);Map<String, Object> map2 = Map.of("name", "Tiger", "age", 3);listOfMaps.add(map1);listOfMaps.add(map2);// 将List<Map<String, Object>>转换为List<Animal>List<Animal> animals = convertList(listOfMaps, Animal.class);// 输出转换后的Animal对象列表for (Animal animal : animals) {System.out.println(animal);}}
}
这里的 convertList 方法接受 List<Map<String, Object>> 和一个 Class 参数,其中 T 是你希望转换的目标类型。方法使用反射根据提供的类 clazz 创建对象,并将其添加到结果列表中。在这个例子中,我们将其用于 Animal 类型。