现在呢我有2个对象user这2个对象里面的属性一模一样就是查询数据库的时候对应的属性值不一样
user对象 里面有属性userid,username,userpassword,usersex ,userage
我想要的一个方法是怎么样比较这2个user对象并且找出里面不一样的属性和值
我不想一个一个属性的比较而且如果这么做了我后面还有很多的对象要比较感觉太麻烦了。求大神们指点。。
user对象 里面有属性userid,username,userpassword,usersex ,userage
我想要的一个方法是怎么样比较这2个user对象并且找出里面不一样的属性和值
我不想一个一个属性的比较而且如果这么做了我后面还有很多的对象要比较感觉太麻烦了。求大神们指点。。
解决方案 »
- js里面怎样获取一个变量的值的前4位了?
- netbeans 开发web的时候,怎么看网页的效果啊?非要运行才可以吗
- 验证框架里的validator-rules.xml以及validator_1_1_3.dtd如何生成?
- jsp页面向applet如何传递参数我知道,但是applet如何向jsp传递参数呢?
- 再描述一下,以便得到各位侠客的热情帮助。如何防止非法用户进行刷新重新进入当前页面。
- 用javascript实现字符串的比较
- 表单按钮获取表单名
- 关于JSP分页的问题(有源码)
- JRUN达人请进~帮帮小妹解决下JRUN滴粉简单问题|||||
- sql 语句中怎么控制一次查询的数据条数,比如 我一次只要3条数据
- jsp到serlet传值的问题
- struts 2 部分规避"避免重复提交功能"
boolean isEuqal(USER user)
{
//在这里一个个比较属性,如果有不一样就返回false,一样就放回true}
//想要比较两个对象是否一样就这样
user1.isEuqal(user2);就行了,不知道是不是这样的效果
public class BeanUtil{
//这里用泛型T保证传进来的o1 o2必须是同一个类型的对象
public static <T> void compare(T o1,T o2) throws Exception{
PropertyDescriptor pds=Introspector.getBeanInfo(o1.getClass,Object.class).getPropertyDescriptors();//获取对象的所有属性描述
for(PropertyDescriptor pd:pds){
String name=pd.getName();//获取属性名
Method readMethod=pd.getReadMethod();//获取此属性的读方法即get方法
Object value1=readMethod.invoke(o1);//调用get方法得到此属性在o1中的值
Object value2=readMethod.invoke(o1);//调用get方法得到此属性在o2中的值
/*
*两个属性值不一样的就打印出来,这里只是简单的比较
*如果这两个value1和value2不是常规的类型而是数组或者集合或者又是其它的对象
*是集合或数组的自己进行展开一一取出对象进行递归调用,对象的直接递归调用
*/
if(value1.equals(value2)){
System.out.println("属性:'"+name+"'不同一个为:"+value1+",另一个为:"+value2);
}
}
}
}
这里的if(value1.equals(value2)){ 方法需要判断你数据库中具体使用哪种数据类型,也就是实体使用的数据类型,如果为:instanceof BigDecimal,用compareTo方法
还有null值得处理等
我想要的一个方法是怎么样比较这2个user对象并且[color=#0000FF]找出里面不一样的属性和值[/color]
找出不同的属性,不是判断对象是否相同。
如果都要,就搞个List存放吧,一个个比较,不一样就丢List里,最后返回。
不过我找到了一个方法就是apache有一个方法就是把对象转换成map集合然后便利map就可以了得到2个map然后通过map的key得到value进行比较把不一样的值存入list对象返回回去。就可以得到不一样的值和属性了
对于其他的类型比较必须要开始判断这个就不解释了。