java中对javabean进行判断重复

java中可以对javabean进行判断重复的。
像list中有contain方法。
HashSet是没有重复的列表




但是对于普通的javabean如果能做到判断是相同的呢。这就涉及到javabean的hashcode和equals方法。
这两个方法是从Object继承而来的。


例如:如果想要判断一个javabean中的某几个属性相同则属于重复javabean。这是可以重写hashcode方法和equals方法。


如:
public class TestMain18 {


    private String mmsi;
    private String lon;
    private String lat;
    private java.util.Date updateTime;


    。。。set和get方法。。。

    //接下来重写hashcode方法和equals方法。


    @Override
    public int hashCode() {
        // TODO Auto-generated method stub
        return mmsi.hashCode()+lat.hashCode()+lon.hashCode()+updateTime.hashCode();
    }


    @Override
    public boolean equals(Object obj) {
        try {
            if(obj == null) {
                return false; 
            }
            else{
                if(obj instanceof TestMain18) { 
                    TestMain18 t = (TestMain18)obj; 
                    if(t.mmsi.equals(this.mmsi) && t.lat.equals(this.lat)&& t.lon.equals(this.lon)&&t.updateTime.equals(this.updateTime)) {  
                        return true;  
                       }
                }
            }
            
            return false;
        }
        catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return false;
        }  
    }


    public static void main(String[] args) {
        Date date=new Date();
TestMain18 t1=new TestMain18();
        t1.setLat("121");
        t1.setLon("30");
        t1.setMmsi("11");
        t1.setUpdateTime(date);
        
        
        TestMain18 t2=new TestMain18();
        t2.setLat("121");
        t2.setLon("30");
        t2.setMmsi("11");
        t2.setUpdateTime(date);
        
//用HashSet
        HashSet hashSet = new HashSet();  
        hashSet.add(t1);  
        hashSet.add(t2);  
        System.out.println(hashSet);  
        System.out.println();
        for(TestMain18 t:hashSet){  
            System.out.println(t);  
        } 


//用List
List lists = new ArrayList();
        if(!lists.contains(t1)){
            lists.add(0, t1);
        }
        
        if(!lists.contains(t2)){//重写equals
            lists.add(0, t2);
        }
        System.out.println("长度:"+lists.size());
    }
 }


 通过执行main函数,可以看到HashSet中只有一条记录。说明t1和t2是重复数据。
 系统是如何判断的呢:


 用HashSet时:
 首先当添加add时,会判断javabean的hashCode是否一样,如果一样再去判断equals方法是否一样,
 如果都一样,则系统认为这两个javabean是重复的。不添加到HashSet中。


 用List时,
 list中有contain方法。当用contain方法时,会去掉用javabean的equals方法。如果该javabean的equals方法和list中其余的javabean一样,
 则系统认为是重复数据,list的contain方法会返回true,表示已存在。




 说明:如果想要判断javabean是否相同。需要重写hashCode和equals方法。
 示例如上。注意两点:
 第一点:重写javabean的hashCode和equals方法。具体如何重写见上面示例。
 第二点:用list的contain方法或者用HashSet的add方法。都可以达到过滤重复的javabean。

你可能感兴趣的:(java中对javabean进行判断重复)