• 判断类的两个对象是否相同要重新实现equals方法


      1 import java.util.Objects;
      2 
      3 public class ObjectProperty {
      4     public String devId;
      5     public long timestamp;
      6     public double latitude;
      7     public double longitude;
      8     public int satellite;
      9     public double hdop;
     10     public double altitude;
     11     public double speed;
     12     public double direction;
     13     public ObjectProperty(String devId2, long timestamp2, double latitude2, double longitude2, int satellite2,
     14             double hdop2, double altitude2, double speed2, double direction2) {
     15         this.devId=devId2;this.timestamp=timestamp2;this.latitude=latitude2;this.longitude=longitude2;this.satellite=satellite2;this.hdop=hdop2;this.altitude=altitude2;this.speed=speed2;this.direction=direction2;
     16     }
     17     public String getDevId() {
     18         return devId;
     19     }
     20     public void setDevId(String devId) {
     21         this.devId = devId;
     22     }
     23     public long getTimestamp() {
     24         return timestamp;
     25     }
     26     public void setTimestamp(long timestamp) {
     27         this.timestamp = timestamp;
     28     }
     29     public double getLatitude() {
     30         return latitude;
     31     }
     32     public void setLatitude(double latitude) {
     33         this.latitude = latitude;
     34     }
     35     public double getLongitude() {
     36         return longitude;
     37     }
     38     public void setLongitude(double longitude) {
     39         this.longitude = longitude;
     40     }
     41     public int getSatellite() {
     42         return satellite;
     43     }
     44     public void setSatellite(int satellite) {
     45         this.satellite = satellite;
     46     }
     47     public double getHdop() {
     48         return hdop;
     49     }
     50     public void setHdop(double hdop) {
     51         this.hdop = hdop;
     52     }
     53     public double getAltitude() {
     54         return altitude;
     55     }
     56     public void setAltitude(double altitude) {
     57         this.altitude = altitude;
     58     }
     59     public double getSpeed() {
     60         return speed;
     61     }
     62     public void setSpeed(double speed) {
     63         this.speed = speed;
     64     }
     65     public double getDirection() {
     66         return direction;
     67     }
     68     public void setDirection(double direction) {
     69         this.direction = direction;
     70     }
     71     @Override
     72     public String toString() {
     73         return "ObjectProperty [devId=" + devId + ", timestamp=" + timestamp + ", latitude=" + latitude + ", longitude="
     74                 + longitude + ", satellite=" + satellite + ", hdop=" + hdop + ", altitude=" + altitude + ", speed="
     75                 + speed + ", direction=" + direction + "]";
     76     }
     77     /**
     78      * 判断两个对象时候相等必须重写这个方法
     79      */
     80     @Override
     81     public boolean equals(Object obj) {
     82         if(this==obj)
     83             return true;
     84         if(obj==null||getClass()!=obj.getClass())
     85             return false;
     86         ObjectProperty objectProperty=(ObjectProperty) obj;
     87         return Objects.equals(devId, objectProperty.devId)&&
     88                 Objects.equals(timestamp, objectProperty.timestamp)&&
     89                 Objects.equals(latitude, objectProperty.latitude)&&
     90                 Objects.equals(longitude, objectProperty.longitude)&&
     91                 Objects.equals(satellite, objectProperty.satellite)&&
     92                 Objects.equals(hdop, objectProperty.hdop)&&
     93                 Objects.equals(altitude, objectProperty.altitude)&&
     94                 Objects.equals(speed, objectProperty.speed)&&
     95                 Objects.equals(direction, objectProperty.direction);
     96         //return super.equals(obj);
     97     }
     98     @Override
     99     public int hashCode() {
    100         return this.devId.hashCode();
    101         //return super.hashCode();
    102     }
    103     
    104 }

    首先如果是同一个对象那么就返回真

    如果不是同一个类绝对为假

    如果两个对象的所有关注的属性全部相同那么可以两个对象相同

    另外hashcode的简单覆盖是直接返回唯一id的hashcode而不是类的hashcode那么如果唯一的id是相同的话,可以认为两个对象的Hashcode相同时同一个对象


    万事走心 精益求美


  • 相关阅读:
    小峰视频十三:二维数组
    小峰视频十二:java数组
    小峰视频十一:循环结构的跳出
    小峰视频十:循环while、for
    小峰视频九:选择语句if、switch
    小峰视频八:逻辑运算符、关系运算符、三门运算符
    小峰视频七:数据类型转换、数据运算
    eggjs+vue实现下载图片 js下载网络图片
    报错/Warning: You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored
    React/事件系统
  • 原文地址:https://www.cnblogs.com/kongchung/p/9913995.html
Copyright © 2020-2023  润新知