Dupliquer possible:
Comment convertir un object Java (bean) en paires clé-valeur (et inversement)?
Quel est le meilleur moyen de convertir une List to a List<Map>.
Existe-t-il une méthode / API personnalisée?
K = nom de champ du POJO et V est la valeur correspondante
public class POJO implements Serializable{ Ssortingng name; Ssortingng age; //getters and setters }
BeanMap d’Apache Commons fait le travail
Cela ressemble à un travail pour le bon et le vieux Introspector .
Exemple de travail:
// Don't be lazy like this, do something about the exceptions public static void main(Ssortingng[] args) throws Exception { List pojos = new ArrayList (); POJO p1 = new POJO(); p1.setAge("20"); p1.setName("Name"); pojos.add(p1); POJO p2 = new POJO(); // ... System.out.println(convertCollection(pojos)); } public static List
Vous pouvez utiliser la reflection pour le faire. Voir Class.getDeclaredFields . Cela vous donnera les champs d’une classe, vous pourrez ensuite en obtenir les valeurs et remplir votre carte.
Notez que vous devrez peut-être appeler setAccessible sur les champs si ils sont privés avant de pouvoir obtenir la valeur.
Edit: Ma réponse s’applique uniquement au cas où vous ne connaissez pas les champs / l’implémentation du POJO lors de la création de la carte.
Si vous voulez dire une carte de K, V alors cela fonctionnera
List pojos = ...; Map map = new HashMap(); for (Pojo pojo : pojos) { map.put(pojo.getName(), pojo.getAge()); }
En supposant que vous souhaitiez une liste sans Map
, le moyen le plus simple consiste probablement à utiliser une simple boucle for:
Map theMap = new HashMap(); for (POJO obj : theList) { // Obviously the below can be simplified to one line // but it makes sense to make everything explicit for // ease of reading K key = ... // obj.getName() maybe? V value = ... // obj itself maybe? theMap.put(key, value); }
Vous devez connaître le nom du POJO. En supposant que vous ayez quelque chose comme pojo.getName()
, alors ça va comme ceci:
Map pojoMap = new HashMap(); for (Pojo pojo:pojoList) { pojoMap.put(pojo.getName(), pojo); }
Notez que j’ai changé votre exigence, j’ai converti une liste de pojos en une carte.