Maison  >  Article  >  Java  >  Comment convertir des objets en cartes en Java – en utilisant BeanMap

Comment convertir des objets en cartes en Java – en utilisant BeanMap

PHPz
PHPzavant
2023-05-08 15:49:081900parcourir

Il existe de nombreuses façons de convertir des beans Java et des cartes, telles que :

1. Convertissez d'abord les beans en json via ObjectMapper, puis convertissez json en map. Cependant, cette méthode est compliquée et inefficace. 10 000 haricots, ça prend 12 secondes ! ! ! Non recommandé

2. Obtenez les attributs et les valeurs de la classe du bean via la réflexion Java, puis convertissez-les en paires clé-valeur correspondant à la carte. Cette méthode est la deuxième meilleure, mais un peu plus gênante

. 3. Via net.sf.cglib La méthode de la classe .beans.BeanMap est extrêmement efficace. La différence entre elle et la deuxième méthode est qu'elle utilise le cache. Elle doit être initialisée lors de la première création du bean, puis du cache. Le cache est utilisé, il est donc extrêmement rapide. Après les tests, il ne faut qu'environ 300 millisecondes pour parcourir les conversions de beans et de cartes 10 000 fois.

Donc, la troisième méthode est recommandée. Voici le code correspondant :

/**
* 将对象装换为map
* @param bean
* @return
*/
public static Map<String, Object> beanToMap(T bean) {
Map<String, Object> map = Maps.newHashMap();
if (bean != null) {
BeanMap beanMap = BeanMap.create(bean);
for (Object key : beanMap.keySet()) {
map.put(key+"", beanMap.get(key));
}
}
return map;
}

/**
* 将map装换为javabean对象
* @param map
* @param bean
* @return
*/
public static T mapToBean(Map<String, Object> map,T bean) {
BeanMap beanMap = BeanMap.create(bean);
beanMap.putAll(map);
return bean;
}

/**
* 将List转换为List<Map<String, Object>>
* @param objList
* @return
* @throws JsonGenerationException
* @throws JsonMappingException
* @throws IOException
*/
public static List<Map<String, Object>> objectsToMaps(List objList) {
List<Map<String, Object>> list = Lists.newArrayList();
if (objList != null && objList.size() > 0) {
Map<String, Object> map = null;
T bean = null;
for (int i = 0,size = objList.size(); i < size; i++) {
bean = objList.get(i);
map = beanToMap(bean);
list.add(map);
}
}
return list;
}

/**
* 将List<Map<String,Object>>转换为List
* @param maps
* @param clazz
* @return
* @throws InstantiationException
* @throws IllegalAccessException
*/
public static List mapsToObjects(List<Map<String, Object>> maps,Class clazz) throws InstantiationException, IllegalAccessException {
List list = Lists.newArrayList();
if (maps != null && maps.size() > 0) {
Map<String, Object> map = null;
T bean = null;
for (int i = 0,size = maps.size(); i < size; i++) {
map = maps.get(i);
bean = clazz.newInstance();
mapToBean(map, bean);
list.add(bean);
}
}
return list;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer