本文目录
- 如何把Map转换成Bean
- Java中的Bean包中的几个类
- c#propertygrid 显示结构体
- java 中怎么合并同类对象的属性
- java中如何把list数据转换为json形式的
- java怎么实现导出excel
- 如何将list
- c#list怎么转换成datatable
- java中怎么将实体转为map
如何把Map转换成Bean
在做导入的时候,遇到了需要将map对象转化 成javabean的问题,也就是说,不清楚javabean的内部字段排列,只知道map的 key代表javabean的字段名,value代表值。那现在就需要用转化工具了。是通用的哦!首先来看 JavaBean 转化成Map的方法:[java] view plaincopy[java] /** * 将一个 JavaBean 对象转化为一个 Map * @param bean 要转化的JavaBean 对象 * @return 转化出来的 Map 对象 * @throws IntrospectionException 如果分析类属性失败 * @throws IllegalAccessException 如果实例化 JavaBean 失败 * @throws InvocationTargetException 如果调用属性的 setter 方法失败 */ @SuppressWarnings({ “rawtypes“, “unchecked“ }) public static Map convertBean(Object bean) throws IntrospectionException, IllegalAccessException, InvocationTargetException { Class type = bean.getClass(); Map returnMap = new HashMap(); BeanInfo beanInfo = Introspector.getBeanInfo(type); PropertyDescriptor propertyDescriptors = beanInfo.getPropertyDescriptors(); for (int i = 0; i《 propertyDescriptors.length; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (!propertyName.equals(“class“)) { Method readMethod = descriptor.getReadMethod(); Object result = readMethod.invoke(bean, new Object); if (result != null) { returnMap.put(propertyName, result); } else { returnMap.put(propertyName, ““); } } } return returnMap; } 下面是将Map转化成JavaBean对象的方法:[java] view plaincopy[java] /** * 将一个 Map 对象转化为一个 JavaBean * @param type 要转化的类型 * @param map 包含属性值的 map * @return 转化出来的 JavaBean 对象 * @throws IntrospectionException 如果分析类属性失败 * @throws IllegalAccessException 如果实例化 JavaBean 失败 * @throws InstantiationException 如果实例化 JavaBean 失败 * @throws InvocationTargetException 如果调用属性的 setter 方法失败 */ @SuppressWarnings(“rawtypes“) public static Object convertMap(Class type, Map map) throws IntrospectionException, IllegalAccessException, InstantiationException, InvocationTargetException { BeanInfo beanInfo = Introspector.getBeanInfo(type); // 获取类属性 Object obj = type.newInstance(); // 创建 JavaBean 对象 // 给 JavaBean 对象的属性赋值 PropertyDescriptor propertyDescriptors = beanInfo.getPropertyDescriptors(); for (int i = 0; i《 propertyDescriptors.length; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (map.containsKey(propertyName)) { // 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。 Object value = map.get(propertyName); Object args = new Object; args = value; descriptor.getWriteMethod().invoke(obj, args); } } return obj;
Java中的Bean包中的几个类
以下几个类几乎都能通过代码直接写到Bean里面,但是这样的话就固定了BeanInfo,而以下几个类的巧妙之处就在于可以在不改动Bean本身属性的前提下动态的为Bean添加响应的属性。BeanInfo把一个类看着一个标准Bean。可以获得各个属性的属性形容器来对Bean的属性进行操作。通过Introspector.getBeanInfo(Class《?》 beanClass)来实例化PropertyDescriptor属性形容器,包含着对Bean中属性的相关操作操作。可以通过BeanInfo.getBeanInfo获取或者通过new来实例化.PropertyChangeListener属性改变监听事件,PropertyChangeSupport绑定Bean和监听器具体操作。通过实现propertyChange方法来自定义自己的操作。通过PropertyChangeSupport的firePropertyChange方法来触发所有监听事件,知道注意的是如果你要在Bean里面封装PropertyChangeSupport通过写方法暴露监听器的addPropertyChangeListener方法时最好方法名还用addPropertyChangeListener,因为属性描述器的构造方法通过检查Bean里面是否有addPropertyChangeListener方法来判定是否支持绑定属性改变事件(isBound)。VetoableChangeListener校验监听,有事件监听的使用方法相似,通过VetoableChangeSupport来绑定。通过实现vetoableChange方法来自定义自己的校验。VetoableChangeSupport提供了专门的PropertyVetoException来定义这个校验失败时间应该抛出异常。实现PropertyEditor接口需要实现12个方法有时间显得过于复杂,可以通过通过继承PropertyEditorSupport并重写setValue或者getValue来是来自定义属性编辑器。
c#propertygrid 显示结构体
private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e) { if (e.ChangedItem.Value is int) { if (int.Parse(e.ChangedItem.Value.ToString())》100) { e.ChangedItem.PropertyDescriptor.SetValue(this.propertyGrid1.SelectedObject, e.OldValue); } } }
java 中怎么合并同类对象的属性
package cn.utils;import java.beans.BeanInfo;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.sql.Timestamp;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.regex.Pattern;import org.apache.commons.beanutils.BeanUtils;public class ExtendObject {/*** 将相同类型的对象的内容向右合并* @param beanType 返回对象的类型* @param initObject 包含原始数据的对象* @param updateObject包含修改后数据的对象* @return返回两个对象的合并,相同属性的值如果convertedObject中包含,且不为null的话取它的值,否则取returnedObject的值*/@SuppressWarnings(“unchecked“)public Object extendObject(Object beanType, Object initObject, Object updateObject){Map map1 = BeanToMap(initObject);Map map2 = BeanToMap(updateObject);List list = getMapKeySet(map1);for(int i=0; i《list.size(); i++){Object map2Value = map2.get(list.get(i));if(null!=map2Value){map1.put(list.get(i), map2Value);}}return MapToBean(beanType, map1);}/*** 将map转化为bean* @param bean 将要转化成为的对象* @param map 被转化的map对象*/@SuppressWarnings(“unchecked“)public Object MapToBean(Object bean,Map map){Object type = null;Date date = null ;try {type = bean.getClass().newInstance();BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());for(PropertyDescriptor p: beanInfo.getPropertyDescriptors()){String propertyName = p.getName();Object mapValue = map.get(propertyName);//去掉键为’class’的键值对if(null!=mapValue&&!“class“.equals(propertyName)){//判断该字符转是否为日期类型if(CheckType.isDateType((String)mapValue)){String dateType = CheckType.getDateType((String)mapValue);if(dateType.equals(“yyyy-MM-dd HH:mm:ss“)){date = new SimpleDateFormat(dateType).parse((String)mapValue);p.getWriteMethod().invoke(type, new Timestamp(date.getTime()));}else{p.getWriteMethod().invoke(type, date);}//判断该字符串是否为整型,同时忽略值为数字,但是类型是字符串的Id们}else if(CheckType.isInt((String) mapValue)&&(!Pattern.matches(“/w*Id“, propertyName))){p.getWriteMethod().invoke(type, Integer.getInteger((String)mapValue).intValue());//默认剩下的类型都是字符串型}else{p.getWriteMethod().invoke(type, mapValue);}}}} catch (IntrospectionException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (ParseException e) {e.printStackTrace();}return type;}/*** 将bean转化为map* @param object* @return*/@SuppressWarnings(“unchecked“)public Map BeanToMap(Object object){Map map = null ;try {map = BeanUtils.describe(object);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();}return map;}/*** 获得对应Map的键值* @param map* @return*/@SuppressWarnings(“unchecked“)public List getMapKeySet(Map map){List list = new ArrayList();Iterator iterator = map.keySet().iterator();while(iterator.hasNext()){list.add(iterator.next());}return list;}///**// * @param args// *///public static void main(String args) throws Exception{//System.out.println(isInt(“1“));//Admin a = new Admin();//a.setAdminId(“1“);//a.setAdminPassword(“1“);////Admin b = new Admin();//b.setAdminPassword(“2“);//Admin c = (Admin)extendObject(new Admin(),a,b);//System.out.println(c.getAdminId()+“----“+c.getAdminPassword());//}}------------------------------------------------------------------------------------package cn.utils;import java.util.regex.Pattern;public class CheckType {/*** 判断该字符串是否为日期类型* @param str* @return*/public static boolean isDateType(String str){Boolean b = false;String dateType1 =“/d{4}-/d{2}-/d{2}/s/d{2}:/d{2}:/d{2}./d*“;String dateType2 =“/d{4}-/d{2}-/d{2}/s/d{2}:/d{2}:/d{2}“;String dateType3 =“/d{4}-/d{2}-/d{2}“;if(Pattern.matches(dateType1, str)||Pattern.matches(dateType2, str)||Pattern.matches(dateType3, str)){b = true;}return b;}/*** 返回字符串所属日期格式* @param str* @return*/public static String getDateType(String str){String dateType1 =“/d{4}-/d{2}-/d{2}/s/d{2}:/d{2}:/d{2}./d*“;String dateType2 =“/d{4}-/d{2}-/d{2}/s/d{2}:/d{2}:/d{2}“;String dateType3 =“/d{4}-/d{2}-/d{2}“;if(Pattern.matches(dateType1, str)||Pattern.matches(dateType2, str)){return“yyyy-MM-dd HH:mm:ss“;}if(Pattern.matches(dateType3, str)){return“yyyy-MM-dd“;}return null;}/*** 判断该字符串是否为整型* @param str* @return*/public static boolean isInt(String str){Boolean b = false;if(Pattern.matches(“/d+“, str)){b = true;}return b;}}
java中如何把list数据转换为json形式的
新建一个Web项目(或Java项目)
打开项目,在Java中的package鼠标右键,依次操作“New---》Class”,如下图所示:
这时,弹出新建Java类窗口,填写以下信息
(1)Source folder:源文件夹
(2)Package:包
(3)Name:类名
勾选下方的主函数和注释
如下图所示:
创建完毕后,看到Java类代码,如下图所示:
导入有关的json jar包,编写List和JSONArray,编写完成后鼠标右键运行应用程序,如下图所示:
java怎么实现导出excel
偶将最近写了两个导出excel的方法,第一个是面向过程的思路,就是在指定的单元格写入指定的值,如下: /** *负责数据导入到EXCEL * * @param realPath * EXCEL表格存放的绝对路径 * @param sheetname * * @param xLocation * EXCEL表格的行索引,从1开始* @param yLocation * EXCEL表格的列索引,从1开始 * @param value * 需要导入的数据 * */ public void modifyExcel(String realPath,String sheetname,int xLocaion,int yLocation,String value){ POIFSFileSystem fs=null; HSSFWorkbook wb=null; try { File file=new File(realPath); if(file.exists()){ fs = new POIFSFileSystem(new FileInputStream(realPath)); wb=new HSSFWorkbook(fs); HSSFSheet s=wb.getSheetAt(0); //函数处理时横纵坐标从索引0开始 HSSFRow row=s.getRow(xLocaion-1); HSSFCell cell=null; if(row!=null){ cell=row.getCell(yLocation-1); if(cell==null){ cell=row.createCell(yLocation-1); } }else{ row=s.createRow(xLocaion-1); cell=row.createCell(yLocation-1); } cell.setCellValue(value); }else{ wb=new HSSFWorkbook(); HSSFSheet s=wb.createSheet(); wb.setSheetName(0, sheetname); HSSFRow row=s.createRow(xLocaion-1); HSSFCell cell=row.createCell(yLocation-1); cell.setCellValue(value); } FileOutputStream fos=new FileOutputStream(realPath); wb.write(fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 第二种就是运用了对象,以对象为单位写入数据,即一个对象的所有属性在一行列出,有多少个对象就有多少行,此方法比较适用于个人信息导出之类的应用,至于导出属性的顺序问题在导出对象的实体类内部改动下即可: /** *负责数据导入到EXCEL * * @param realPath * EXCEL表格存放的绝对路径 * @param sheetname * * @param users * 需要导出到excel表的对象数组 */ public void outputExcel(String realPath,String sheetname,UserModel users){ FileOutputStream fos; try { File file=new File(realPath); fos = new FileOutputStream(file, true); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s=wb.createSheet(); wb.setSheetName(0, sheetname); HSSFRow rows=new HSSFRow[users.length]; HSSFCell cells=new HSSFCell; for (int i=0; i《users.length;i++) { // 相当于excel表格中的总行数 PropertyDescriptor descriptors=getAvailablePropertyDescriptors(users[i]); rows[i]=s.createRow(i); for (int j=0; descriptors!=null&&j《descriptors.length;j++) { java.lang.reflect.Method readMethod = descriptors[j] .getReadMethod(); cells[i][j]=rows[i].createCell(j); Object value=readMethod.invoke(users[i], null); cells[i][j].setCellValue(value.toString()); } } wb.write(fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } }
如何将list
/** * 用于把List《Object》转换成Map《String,Object》形式,便于存入缓存 * @author zhang_bo * @param keyName 主键属性 * @param list 集合 * @return 返回对象 */ private 《T》 Map《String, T》 listToMap(String keyName, List《T》 list){ Map《String, T》 m = new HashMap《String, T》(); try { for (T t : list) { PropertyDescriptor pd = new PropertyDescriptor(keyName, t.getClass()); Method getMethod = pd.getReadMethod();// 获得get方法 Object o = getMethod.invoke(t);// 执行get方法返回一个Object m.put(o.toString(), t); } return m; } catch (Exception e) { logger.error(“Convert List to Map failed“); e.printStackTrace(); } return null; }
c#list怎么转换成datatable
代码如下:/// 《summary》 /// 将List转换成DataTable /// 《/summary》 /// 《typeparam name=“T“》《/typeparam》 /// 《param name=“data“》《/param》 /// 《returns》《/returns》 public static DataTable ToDataTable《T》(this IList《T》 data) { PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T)); DataTable dt = new DataTable(); for (int i = 0; i 《 properties.Count; i++) { PropertyDescriptor property = properties[i]; dt.Columns.Add(property.Name, property.PropertyType); } object values = new object[properties.Count]; foreach (T item in data) { for (int i = 0; i 《 values.Length; i++) { values[i] = properties[i].GetValue(item); } dt.Rows.Add(values); } return dt; }
java中怎么将实体转为map
import java.beans.BeanInfo;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;/*** java实体类转换为map* @author vic**/public class JavaBeanUtil {public static Map《String,Object》 convertBeanToMap(Object bean) throws IntrospectionException,IllegalAccessException, InvocationTargetException {Class type = bean.getClass();Map《String,Object》 returnMap = new HashMap《String, Object》();BeanInfo beanInfo = Introspector.getBeanInfo(type);PropertyDescriptor propertyDescriptors = beanInfo.getPropertyDescriptors();for (int i = 0; i 《 propertyDescriptors.length; i++) {PropertyDescriptor descriptor = propertyDescriptors[i];String propertyName = descriptor.getName();if (!propertyName.equals(“class“)) {Method readMethod = descriptor.getReadMethod();Object result = readMethod.invoke(bean, new Object);if (result != null) {returnMap.put(propertyName, result);} else {returnMap.put(propertyName, ““);}}}return returnMap;}}