您现在的位置是:主页 > news > 有哪些可以做任务的网站/宁德市公共资源交易中心

有哪些可以做任务的网站/宁德市公共资源交易中心

admin2025/6/24 9:21:48news

简介有哪些可以做任务的网站,宁德市公共资源交易中心,杭州网站制作哪家好,短网址生成设计1.问题是什么 1)公司代码里的DO里写了一个 compareTo方法,用来进行排序。sonar说,如果写了compareTo方法后,还需要写 equals(), 写完 equals()方法后,又提示 要写 hashCode()方法。 所以这里给出来写 这几个函数的正…

有哪些可以做任务的网站,宁德市公共资源交易中心,杭州网站制作哪家好,短网址生成设计1.问题是什么 1)公司代码里的DO里写了一个 compareTo方法,用来进行排序。sonar说,如果写了compareTo方法后,还需要写 equals(), 写完 equals()方法后,又提示 要写 hashCode()方法。 所以这里给出来写 这几个函数的正…

1.问题是什么

1)公司代码里的DO里写了一个 compareTo方法,用来进行排序。sonar说,如果写了compareTo方法后,还需要写  equals(), 写完 equals()方法后,又提示 要写 hashCode()方法。

  所以这里给出来写 这几个函数的正确姿势

2.原因是什么

  1)原因的话: 就是因为java中比较对象相等,需要 equals相等时,其 hashCode要一样,反之则不然。

3.怎么处理

 1)解决:

compareTo:

根据自己的业务需求,比较对应字段,返回 1,-1,和0即可

equals:

  偷懒的办法,就是直接使用 Java的超类 Object中的 equals()方法:

return (this == obj);

  缺点是: 有的对象虽然不是指向堆中同一地址,但是其内容都是一样的,比如重复查询数据库的同一条数据的两个DO对象。

hashCode:

   方法①: 将对象的各个属性的 hashCode值依次相加,Long, Integer, String 都可以

 longValue.hashCode() + integerValue.hashCode() + stringValue.hashCode()

  方法②: 借助于 @ToString 注解,使用 toString().hashCode()

  return this.toString().hashCode()

主要还是根据需求来, 当然最偷懒的方法是

4.其他

 1)源码: Object, Long等都可以通过Idea 查询所有位置的类来查看其源码

2)ToString() 注解,默认的不会带上 继承父类的属性

3) 如果需要 只比较某些属性相等,就认为两个对象是相等的,则可以重写 equals()和 hashCode方法。

  == equlas方法仿照:

@Overridepublic boolean equals(Object o) {//自反性if (this == o) return true;//任何对象不等于null,比较是否为同一类型if (!(o instanceof Person)) return false;//强制类型转换Person person = (Person) o;//比较属性值return getId() == person.getId() &&Objects.equals(getName(), person.getName()) &&Objects.equals(getSex(), person.getSex());}
————————————————
原文链接:https://blog.csdn.net/qq_40574571/article/details/94188940

== hashCode() 参考:

Java 重写 hashCode 方法总结 - 知乎

Objects.hash(Object... values) //return Arrays.hashCode(values);  

== List 取差集 

// 差集 (list1 - list2)
List<MyVO> reduce1 = listVO1.stream().filter(item -> !listVO2.contains(item)).collect(toList());// 差集 (list2 - list1)
List<MyVO> reduce2 = listVO2.stream().filter(item -> !listVO1.contains(item)).collect(toList());