java-List >轉換成List >實體類的集合


注:List<Map<String,String>> map 的泛型可以換別的類型,在以此改代碼而已。

  1   class Javabean1{
  2         private String data1;
  3         private String data2;
  4         private String data3;
  5         //...
  6     }
  7     class Javabean2{
  8         private String data1;
  9         private String data2;
 10         private String data3;
 11         //...
 12     }
 13     
 14     class classAll{
 15         private Javabean1 bean1;
 16         private List<Javabean2> listbean2;
 17         //...
 18     }
 19     
 20     /**
 21      * Map集合對象轉化成 JavaBean集合對象
 22      * classAll有兩個屬性:1 Javabean1實體類,2 List<Javabean2> 實體類的集合
 23      * @param javaBean
 24      *            JavaBean實例對象
 25      * @param mapList
 26      *            Map數據集對象
 27      * @return
 28      *
 29      */
 30     public static List<classAll> listmapUS(Javabean1 javaBean,
 31             List<Map<String, String>> mapList) {
 32         if (mapList == null || mapList.isEmpty()) {
 33             return null;
 34         }
 35         List<classAll>  objectList = new ArrayList<classAll>();
 36         Javabean1 object = null;
 37         for (Map map : mapList) {
 38             classAll infoCargo=new classAll();
 39             if (map != null) {
 40                 object = mapBeanUS(javaBean, map);
 41                 infoCargo.SetJavabean1(object);
 42                 if(map.containsKey("omsPickupCargo")){
 43                     //這個map的key值是json的字符串,需要改,不要的話刪掉就好
 44                     infoCargo.setJavabean2(JSONArray.toList(JSONArray.fromObject(map.get("omsPickupCargo")), new OmsPickupCargo(), new JsonConfig()));    
 45                 }
 46                 objectList.add(infoCargo);
 47             }
 48         }
 49         return objectList;
 50     }
 51     /**
 52      * Map對象轉化成 JavaBean對象
 53      * 
 54      * @param javaBean
 55      *            JavaBean實例對象
 56      * @param map
 57      *            Map對象
 58      * @return
 59      * 
 60      */
 61     public static Javabean1 mapBeanUS(Javabean1 javaBean, Map<String, String> map) {
 62         try {
 63             // 獲取javaBean屬性
 64             BeanInfo beanInfo = Introspector.getBeanInfo(javaBean.getClass());
 65             // 創建 JavaBean 對象
 66             Javabean1 obj = (Javabean1) javaBean.getClass().newInstance();
 67             PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
 68             if (propertyDescriptors != null && propertyDescriptors.length > 0) {
 69                 String propertyName = null; // javaBean屬性名
 70                 Object propertyType = null;
 71                 for (PropertyDescriptor pd : propertyDescriptors) {
 72                     propertyName = pd.getName();
 73                     propertyType = pd.getPropertyType();
 74                     if (map.containsKey(propertyName)) {
 75                         if(StringUtils.isEmpty(map.get(propertyName))){
 76                             continue;
 77                         }
 78                         pd.getWriteMethod().invoke(obj, new Object[] { endWitch(propertyType, map.get(propertyName)) });
 79                     }
 80                 }
 81                 return obj;
 82             }
 83         } catch (Exception e) {
 84             e.printStackTrace();
 85         }
 86         return null;
 87     }
 88     /**
 89      * 按實體類屬性數據類型把String類型轉換對應的類型
 90      * @param object object屬性類型
 91      * @param value value要轉換的值
 92      * @return
 93      * 
 94      */
 95     public static Object endWitch(Object object, String value) {
 96         if ("".equals(object.toString())|| null == object.toString()) {            
 97             return null;
 98         }
 99         if ("".equals(value)  || null == value) {        
100             return null;
101         }
102         if (object.toString().endsWith("Long")) {
103             return Long.parseLong(value);
104         }
105         if (object.toString().endsWith("Integer")) {
106             return Integer.parseInt(value);
107         }
108         if (object.toString().endsWith("Double")) {
109             return Double.parseDouble(value);
110         }
111         if (object.toString().endsWith("Float")) {
112             return Float.parseFloat(value);
113         }
114         if (object.toString().endsWith("Date")) {
115             //vaue為毫秒數需要轉date格式,可以根據你的需要修改
116             SimpleDateFormat format = new SimpleDateFormat();
117             String d = format.format(Long.parseLong(value));
118             try {
119                 Date date = format.parse(d);
120                 return date;
121             } catch (ParseException e) {
122                 e.printStackTrace();
123             }
124         }
125         return value;
126     }

注:關鍵代碼由網友提供,找不到他的網頁地址了,所以在次感謝他!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。