泛型如何来对比?
List<myClass> a=new List<myClass>();
List<myClass> a2=new List<myClass>();class myClass{
private String a;
private String b;
private String c;
private boolean e;
}
我想深层比较a和a2 他们都是myclass泛型 myclass里又有很多属性。。
我想深层比较泛型a 和泛型a2下各个属性是否相同,如果有不同 返回true 或false

解决方案 »

  1.   

    应该在myClass里添加equals方法和hashCode方法
      

  2.   

    在myClass里重写equals方法(假设所有变量均有getter、setter方法,getA()、setA())
    比如:
    public boolean equals(myClass mc) {
      boolean flg = false;
      if (mc.getA() != this.getA()) {
         flg = true;
      } 
      if (mc.getB() != this.getB()) {
         flg = true;
      } 
      ……
      return flg;
    }
      

  3.   

    List 可以对元素的数量和是否相等作比较,但是,两个 myClass 对象是否相等,应该委托给它们自己来实现。
      

  4.   

    /**
     * 比较两个对象是否相等(深层比较)
     * @return true;相等;false;不相等
     */
    public boolean equals(Object otherobj)
    {
     //检查otherobj 是否为空
     if(otherobj == null) return false;

             //检查otherobj 是否就是当前对象
             if(otherobj == this) return true;         //检查otherobj 是否具有正确的类型, 即检查是否可与当前对象比较
             if(!(otherobj instanceof Field)) return false;         //将otherobj 转换为Field 类的对象引用
             Field tmpObj = (Field)otherobj;
             //
             if(    this.F_name.equals(tmpObj.F_name) 
          && this.F_type.equals(tmpObj.F_type)
          && this.F_length.equals(tmpObj.F_length)          
              )          
             {
              return true;
             }         
             return false; 
    }
     /**
     * 比较两个表对象是否相等
     * @param table:从数据库中取回的表对象
     * @return true:相等;false:不相等
     */
    public boolean comparison(Table table)
    {
    //比较两个表的字段个数是否相等
    if(this.Fieldslist.size()!=table.Fieldslist.size()) return false;

    for(int i=0;i<this.Fieldslist.size();i++)
    {
    if(!this.Fieldslist.get .equals(table.Fieldslist.get ))
    {
    return false;
    }
    }
    return true;
    }
      

  5.   

    /**
     * 比较两个对象是否相等(深层比较)
     * @return true;相等;false;不相等
     */
    public boolean equals(Object otherobj)
    {
     //检查otherobj 是否为空
     if(otherobj == null) return false;

             //检查otherobj 是否就是当前对象
             if(otherobj == this) return true;         //检查otherobj 是否具有正确的类型, 即检查是否可与当前对象比较
             if(!(otherobj instanceof Field)) return false;         //将otherobj 转换为Field 类的对象引用
             Field tmpObj = (Field)otherobj;
             //
             if(    this.F_name.equals(tmpObj.F_name) 
          && this.F_type.equals(tmpObj.F_type)
          && this.F_length.equals(tmpObj.F_length)          
              )          
             {
              return true;
             }         
             return false; 
    }
     /**
     * 比较两个表对象是否相等
     * @param table:从数据库中取回的表对象
     * @return true:相等;false:不相等
     */
    public boolean comparison(Table table)
    {
    //比较两个表的字段个数是否相等
    if(this.Fieldslist.size()!=table.Fieldslist.size()) return false;

    for(int i=0;i<this.Fieldslist.size();i++)
    {
    if(!this.Fieldslist.get .equals(table.Fieldslist.get ))
    {
    return false;
    }
    }
    return true;
    }