Hi eveyone, 我有一个如何比较两个大VO对象是否相等的问题,请大家帮忙,谢谢 Hi eveyone, 我有一个如何比较两个大VO对象是否相等的问题,请大家帮忙,谢谢比如有两个比较大的同一VO对象,里面有大约1000个String类型的字段,我想判断这两个对象是否相等,原则是所有的字段都相等不区分大小写(如果为null的字段视为相等),请问各位有什么好的方法吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重写equal方法。以后直接用equal判断就好了。 我想求一个最简单高效的方案,重写equal或者自己写一个compare方法都可以做到,没问题,但需要长篇累牍的把这1000个属性逐个对比,先对比是否都为空,然后再equalsIgnoreCase,我的问题是是否还有其他更好的方案。 呵呵,这个事情好办,采用反射机制来做。使用this.class,就可以取出所有字段,同样可以取出另一个对象的所有字段,把字段名称相同的进行比较就OK了,一个循环就搞定。当然是重写equals方法或者另外写一个都可以。 每个属性都要写getter方法。在equal里面用反射取字段名,同时调用该字段的getter方法,比较值。就ok了。 请问如何判断一个class的field的类型是否为String? 发射可以得到field的类型。有了类型,不就可以了么? if(filed.getType()==String.class)..... 倒,真是服了你,看来楼主没用过Eclipse,source->生成hashcode和equals菜单 原则是所有的字段都相等不区分大小写(如果为null的字段视为相等)这个怎么办?查找替换? 怪招:把两个对象的String变量用StringBuffer串起来,然后比较串起来的String是否相等就可以了 当然你可以采用一些算法,先拿出100个来比较,相等再比较下100个可以使用Reflect来获取全部String类型的属性,自动处理,否则也是很麻烦的 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【msn365】截止到2008-06-26 17:22:26的历史汇总数据(不包括此帖):发帖数:83 发帖分:1335 结贴数:22 结贴分:405 未结数:61 未结分:930 结贴率:26.51 % 结分率:30.34 % 楼主该结一些帖子了 Test3 t = new Test3("333"); Class c = t.getClass(); Method[] m = c.getDeclaredMethods(); for(int i=0;i<m.length;i++){ if(m[i].getReturnType()==String.class){ try { System.out.println(m[i].getName() + " " +m[i].invoke(t)); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } } java 调用ocx java 闹钟程序 一个简单数字游戏,求代码? 有关JTextPanel 一个很BT的简单问题,来解决!hoho java中字符串的颠倒怎么写? 在次求助:被joc.jar混淆过的文件如何反编译为JAVA文件.有什么好的软件和方法吗? 播放声音的APPLET的问题!急啊! 关于类的路径 菜鸟问题,版本不对? JSP制作的简单网页求助 多线程的 冒泡排序
.....
原则是所有的字段都相等不区分大小写(如果为null的字段视为相等)这个怎么办?查找替换?
把两个对象的String变量用StringBuffer串起来,然后比较串起来的String是否相等就可以了 当然你可以采用一些算法,先拿出100个来比较,相等再比较下100个可以使用Reflect来获取全部String类型的属性,自动处理,否则也是很麻烦的
楼主【msn365】截止到2008-06-26 17:22:26的历史汇总数据(不包括此帖):
发帖数:83 发帖分:1335
结贴数:22 结贴分:405
未结数:61 未结分:930
结贴率:26.51 % 结分率:30.34 %
楼主该结一些帖子了
Test3 t = new Test3("333");
Class c = t.getClass();
Method[] m = c.getDeclaredMethods();
for(int i=0;i<m.length;i++){
if(m[i].getReturnType()==String.class){
try {
System.out.println(m[i].getName() + " " +m[i].invoke(t));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}