Java Objects工具类原理及用法详解

网友投稿 327 2022-11-28


Java Objects工具类原理及用法详解

Objects工具类

jdkcJyTZiGsyS 1.7引进的工具类,都是静态调用的方法,jdk 1.8新增了部分方法

重点方法

equals

用于字符串和包装对象的比较,先比较内存地址,再比较值

deepEquals

数组的比较,先比较内存地址,再比较值,如String、char、byte、int数组,或者包装类型Integer等数组

hashCode

返回对象的hashCode,若传入的为null,则返回0

hash

传入可变参数的所有值得hashCode的总和,底层用Arrays.hashCode

可变参数

重写HashCode和Equals

HashCode方法

顶级类Object里面的方法,所有类都是继承Object的,返回值int类型

根据一定的hash规则(存储地址,字段,或者长度等),映射成一个数值,即散列值

Equals方法

顶级类Object里面的方法,所有类都是继承Object的,返回值boolean类型

根据自定义的匹配规则,用于匹配两个对象是否一样,一般逻辑

//判断地址是否⼀样

//⾮空判断和class类型判断

//强转

//对象⾥⾯的字段⼀⼀匹配

重写规则

class User {

private int age;

private String name;

private Date time;

// 省略setter和getter⽅法

@Override

public boolean equals(Object o) {

if (this == o)

return true;

if (o == null || getClass() != o.getClass())

return false;

User user = (User) o;

return age == user.age && Objects.equals(name, user.name) && Objects.equals(time, user.time);

}

@Override

public int hashCode() {

return Objects.hash(age, name, time);

}

}

问题:当向集合中插入对象时,如何判别在集合中是否已经存在该对象,比如Set确保存储对象的唯一,并判断是不是同一http://个对象呢?

依据hashCode和equals进行判断,所以Set存储的对象必须重写这两个方法

判断两个对象是否一样,首先判断插入obj的hashCode值是否存在,hashCode值不存在则直接插入集合,值存在则还需要判断equals方法判断对象是否相等


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:手把手带你入门 Spring Security的具体流程
下一篇:Mybatis日志参数快速替换占位符工具的详细步骤
相关文章

 发表评论

暂时没有评论,来抢沙发吧~