自己写的两个方法,关于bean和map的转化,比网上的效率快很多
来源:互联网 发布:淘宝装修图片 编辑:程序博客网 时间:2024/05/01 21:13
/**
*
* @Title: convertMap
* @Description: 使用泛型Map转bean
* 首先先把传入的实体bean的类型通过反射实例化,获取该bean的所有方法。
* 遍历map的所有的key,将key首字母变大写,前缀添加set,得到方法名
* 然后遍历bean的所有方法,如果有方法名和map的可以拼接的方法名一致,
* 就将map的value插入bean中(前提是类型必须是一致,否则报错)
* @param @param <T>
* @param @param map
* @param @param tc
* @param @return
* @param @throws IllegalArgumentException
* @param @throws IllegalAccessException
* @param @throws InvocationTargetException
* @param @throws SecurityException
* @param @throws NoSuchMethodException
* @param @throws InstantiationException 设定参数
* @return T 返回类型
* @since 1.0.0
* @author HuYiDong
* @throws
*/
public static <T> T convertMap(Map map, Class<T> tc) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException, InstantiationException{
T t = tc.newInstance();
Iterator it=map.entrySet().iterator();
Method [] methods=tc.getDeclaredMethods();
while(it.hasNext()){
Map.Entry entry=(Map.Entry)it.next();
String methodName="set"+BeantoMap.fristToUpperCase(entry.getKey().toString());
for(Method method:methods){
if(method.getName().equals(methodName)){
Object value=entry.getValue();
method.invoke(t, value);
break;
}
}
}
return t;
}
/**
*
* @Title: fristToUpperCase
* @Description: 首字母变大写
* @param @param str
* @param @return 设定参数
* @return String 返回类型
* @since 1.0.0
* @author HuYiDong
* @throws
*/
public static String fristToUpperCase(String str){
str=str.substring(0,1).toUpperCase()+str.substring(1,str.length());
return str;
}
/**
*
* @Title: fristToUpperCase
* @Description: 首字母变小写
* @param @param str
* @param @return 设定参数
* @return String 返回类型
* @since 1.0.0
* @author HuYiDong
* @throws
*/
public static String fristToLowerCase(String str){
str=str.substring(0,1).toLowerCase()+str.substring(1,str.length());
return str;
}
/**
*
* @Title: convertBean
* @Description: 实体bean转成Map
* 遍历对象所有方法
* 获取实体bean中get的方法,使用反射的获取方法返回值,如果值不为空,就为map的value,
* 然后把get方法去除get的部分,首字母变小写,为map的key
* @param @param obj
* @param @return
* @param @throws IllegalArgumentException
* @param @throws IllegalAccessException
* @param @throws InvocationTargetException 设定参数
* @return Map 返回类型
* @since 1.0.0
* @author HuYiDong
* @throws
*/
public static Map convertBean(Object obj) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{
Class cla=obj.getClass();
Method [] methods=cla.getDeclaredMethods();
Map map =new HashMap();
for(Method method: methods){
if(method.getName().startsWith("get")){
String name=method.getName().substring(3,method.getName().length());
String key =BeantoMap.fristToLowerCase(name);
Object value = method.invoke(obj);
if(null!=value)map.put(key, value);
}
}
return map;
}
*
* @Title: convertMap
* @Description: 使用泛型Map转bean
* 首先先把传入的实体bean的类型通过反射实例化,获取该bean的所有方法。
* 遍历map的所有的key,将key首字母变大写,前缀添加set,得到方法名
* 然后遍历bean的所有方法,如果有方法名和map的可以拼接的方法名一致,
* 就将map的value插入bean中(前提是类型必须是一致,否则报错)
* @param @param <T>
* @param @param map
* @param @param tc
* @param @return
* @param @throws IllegalArgumentException
* @param @throws IllegalAccessException
* @param @throws InvocationTargetException
* @param @throws SecurityException
* @param @throws NoSuchMethodException
* @param @throws InstantiationException 设定参数
* @return T 返回类型
* @since 1.0.0
* @author HuYiDong
* @throws
*/
public static <T> T convertMap(Map map, Class<T> tc) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException, InstantiationException{
T t = tc.newInstance();
Iterator it=map.entrySet().iterator();
Method [] methods=tc.getDeclaredMethods();
while(it.hasNext()){
Map.Entry entry=(Map.Entry)it.next();
String methodName="set"+BeantoMap.fristToUpperCase(entry.getKey().toString());
for(Method method:methods){
if(method.getName().equals(methodName)){
Object value=entry.getValue();
method.invoke(t, value);
break;
}
}
}
return t;
}
/**
*
* @Title: fristToUpperCase
* @Description: 首字母变大写
* @param @param str
* @param @return 设定参数
* @return String 返回类型
* @since 1.0.0
* @author HuYiDong
* @throws
*/
public static String fristToUpperCase(String str){
str=str.substring(0,1).toUpperCase()+str.substring(1,str.length());
return str;
}
/**
*
* @Title: fristToUpperCase
* @Description: 首字母变小写
* @param @param str
* @param @return 设定参数
* @return String 返回类型
* @since 1.0.0
* @author HuYiDong
* @throws
*/
public static String fristToLowerCase(String str){
str=str.substring(0,1).toLowerCase()+str.substring(1,str.length());
return str;
}
/**
*
* @Title: convertBean
* @Description: 实体bean转成Map
* 遍历对象所有方法
* 获取实体bean中get的方法,使用反射的获取方法返回值,如果值不为空,就为map的value,
* 然后把get方法去除get的部分,首字母变小写,为map的key
* @param @param obj
* @param @return
* @param @throws IllegalArgumentException
* @param @throws IllegalAccessException
* @param @throws InvocationTargetException 设定参数
* @return Map 返回类型
* @since 1.0.0
* @author HuYiDong
* @throws
*/
public static Map convertBean(Object obj) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{
Class cla=obj.getClass();
Method [] methods=cla.getDeclaredMethods();
Map map =new HashMap();
for(Method method: methods){
if(method.getName().startsWith("get")){
String name=method.getName().substring(3,method.getName().length());
String key =BeantoMap.fristToLowerCase(name);
Object value = method.invoke(obj);
if(null!=value)map.put(key, value);
}
}
return map;
}
1 0
- 自己写的两个方法,关于bean和map的转化,比网上的效率快很多
- 自己重新写的KeUserModeCallBack 例子,比网上的代码改进很多,请大家指教!
- 原创】自己重新写的KeUserModeCallBack 例子,比网上的代码改进很多,请大家指教!
- 验证matlab的diff函数比自己写c效率高很多
- 比冒泡效率更高的快排方法。
- 关于时间戳自己写的两个方法
- bootloader----自己写的,部分代码是参考网上的,转入pro模式后问题很多!
- 虽然网上很多图片播放的插件,但还是自己写的有成就感。
- 传说中比冒泡排序快很多的排序方法(vb)
- 免费手机上网的方法,比GPRS网速快很多(好东西与大家分亨)
- java bean、List、数组、map和Json的相互转化
- 自己写的快排
- JAVA bean 复制 数据转化 用于两个对象的filed的值的根据set方法和get方法转换
- 分享一份自己写的关于ssh框架自动生成Bean的源代码和思路
- 一个比冒泡,选择效率快的排序方法(折半排序)
- 不区分大小写的字符穿搜索函数,自己写的,效率比StrStrI要高
- 自己写的整数和字符串之间的转化
- 自己写的简易map
- MyEclipse2015创建Maven的父子工程
- 0113 JAVA架构师知识集 (收集到的)【架构】
- 验证码的编写
- Jenkins 配置&集成StyleCop
- 开始使用NDK
- 自己写的两个方法,关于bean和map的转化,比网上的效率快很多
- python-nmap在SLES11上似乎有点小问题
- Uploadify的一些参数
- REST中上传文件简单的实现笔记
- 为何安卓程序用Java开发
- Openstack Keystone 认证流程(四)--Filter流水线
- 辣妈萌宝APP--打开辣妈萌宝进行记录
- Java垃圾回收机制
- is not in the sudoers file 解决方案