Java比较两个对象然后记录不同属性值?求代码javaJava对象

解决方案 »

  1.   

    用的是JSONObject,套了个循环,不晓得撸主喜不喜欢。
    result: {dname=财务部:市场部, LOC=北京:南京}public static void  main(String[] args){
    Department d1 = new Department();
    d1.setDname("财务部");
    d1.setLOC("北京");
    Department d2 = new Department();
    d2.setDname("市场部");
    d2.setLOC("南京");
    JSONObject obj1 = JSONObject.fromObject(d1);
    JSONObject obj2 = JSONObject.fromObject(d2);

    Map record = new HashMap();
    for(int i=0;i<obj1.names().size();i++){
    if(isTheSame(obj1, obj2, i)){
    continue;
    }
    if(!isTheSame(obj1, obj2, i)){
    loadRecord(obj1, obj2, record, i);
    }
    }
    System.out.println(record);
    }
    private static void loadRecord(JSONObject obj1, JSONObject obj2,
    Map record, int i) {
    record.put(obj1.names().get(i), obj1.get(obj1.names().get(i).toString())+":"+obj2.get(obj2.names().get(i).toString()));
    }
    private static boolean isTheSame(JSONObject obj1, JSONObject obj2, int i) {
    return obj1.get(obj1.names().get(i)).equals(obj2.get(obj1.names().get(i)).toString());
    }
      

  2.   

    用Class的getFields方法取出对象所有的属性,然后通过Field的getName方法去比较属性的名字,属性迷你相同的属性用equals方法来比较,属性值不同的属性就记录下来
      

  3.   

    用Class的getFields方法取出对象所有的属性,然后通过Field的getName方法去比较属性的名字,属性名相同的属性用equals方法来比较,属性值不同的属性就记录下来
      

  4.   

    public void contrastObj(Object obj1, Object obj2) {
    if (obj1 instanceof Pojo && obj2 instanceof Pojo) {
    Pojo pojo1 = (Pojo) obj1;
    Pojo pojo2 = (Pojo) obj2;
    List textList = new ArrayList<String>();
    try {
    Class clazz = pojo1.getClass();
    Field[] fields = pojo1.getClass().getDeclaredFields();
    for (Field field : fields) {
    PropertyDescriptor pd = new PropertyDescriptor(field
    .getName(), clazz);
    Method getMethod = pd.getReadMethod();
    Object o1 = getMethod.invoke(pojo1);
    Object o2 = getMethod.invoke(pojo2);
    if (!o1.toString().equals(o2.toString())) {
    textList.add(getMethod.getName() + ":" + "false");
    } else {
    textList.add(getMethod.getName() + ":" + "true");
    }
    }
    } catch (Exception e) {
    // TODO: handle exception
    }
    for (Object object : textList) {
    System.out.println(object);
    }
    }
    }Pojo 是自己定义的业务实体 你自己定义就可以了 
    LZ你真懒
      

  5.   


    我要比较的是两个相同的实体对象,
    getId:false
    getName:false
    getAge:true
    getSex:false
    我的对象还有一个属性叫banji,但是就是没有打印出来
      

  6.   

    你那个属性有get set方法么?
      

  7.   

    楼主的共享精神值大家学习。 在逐字逐句地看完这个帖子以后,我的心久久不能平静,震撼啊!为什么会有如此好的帖子?!我纵横网络blog多年,自以为再也不会有任何帖子能打动我,没想到今天看到了如此精妙绝伦的这样一篇帖子。 
    楼主,是你让我深深地理解了‘人外有人,天外有天’这句话。谢谢侬! 
    在看完这帖子以后,我没有立即回复,因为我生怕我庸俗不堪的回复会玷污了这网上少有的帖子。但是我还是回复了,因为觉得如果不能在如此精彩的帖子后面留下自己的网名,那我死也不会瞑目的!能够在如此精彩的帖子后面留下自己的网名是多么骄傲的一件事啊!楼主,请原谅我的自私! 
    我知道无论用多么华丽的辞藻来形容楼主您帖子的精彩程度都是不够的,都是虚伪的,所以我只想说一句:您的帖子太好看了!我愿意一辈子的看下去! 
    这篇帖子构思新颖,题材独具匠心,段落清晰,情节诡异,跌宕起伏,主线分明,引人入胜,平淡中显示出不凡的文学功底,可谓是字字珠玑,句句经典,是我辈应当学习之典范。 
    就小说艺术的角度而言,这篇帖子不算太成功,但它的实验意义却远远大于成功本身。正所谓:“一马奔腾,射雕引弓,天地都在我心中!”楼主真不愧为无厘界新一代的开山怪! 
    本来我已经对这个社区失望了,觉得这个社区没有前途了,心里充满了悲哀。但是看了你的这个帖子,又让我对社区产生了希望。是你让我的心里重新燃起希望之火,是你让我的心死灰复燃,是你拯救了我一颗拨凉拨凉的心! 
    本来我决定不会在社区回任何帖子了,但是看了你的帖子,我告诉自己这个帖子是一定要回的!这是百年难得一见的好贴啊!苍天有眼啊,让我在优生之年得以观得如此精彩绝伦的帖子! 
    楼主,你要继续努力啊!你是社区的希望啊!