`
umgsai
  • 浏览: 111911 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

使用Apache工具类重写equals和hashcode

阅读更多
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class LvsMonitorVip {
    private String ip;
    private int    port;
    private String protocol;

    public static LvsMonitorVip buildLvsMonitorVip(String ip, int port, String protocol) {
        return new LvsMonitorVip(ip, port, protocol);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) { return true; }

        if (!(o instanceof LvsMonitorVip)) {
            return false;
        }

        LvsMonitorVip lvsMonitorVip = (LvsMonitorVip) o;

        return new EqualsBuilder()
                .append(port, lvsMonitorVip.port)
                .append(protocol, lvsMonitorVip.protocol)
                .append(vip, lvsMonitorVip.vip)
                .isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder(17, 37)
                .append(vip)
                .append(port)
                .append(protocol)
                .toHashCode();
    }
}

 

分享到:
评论

相关推荐

    Java中hashCode和equals方法的正确使用

    我也将使用Apache Commons提供的工具包做一个实现。  hashCode()和equals()定义在Object类中,这个类是所有java类的基类,所以所有的java类都继承这两个方法。  使用hashCode()和equals()  hashCode()方法...

    复杂对象的比较

    Java社区提供了一些工具类和库来简化对象比较,例如Apache Commons Lang的`EqualsBuilder`和`HashCodeBuilder`,或者Google的Guava库中的`Objects.equal()`和`Objects.hashCode()`。 在实际编程中,确保复杂对象的...

    apache commons 包最新使用指南(2009英文)

    - Commons Lang 提供了大量实用工具类,用于扩展 Java 标准库的功能。 - 例如,`StringUtils` 类提供了丰富的字符串操作方法;`ArrayUtils` 类则提供了一系列数组处理方法。 ##### 1.4. 自动化生成 `toString()` ...

    如何去掉list集合中重复的元素?.docx

    对于复杂对象,你可以重写equals()和hashCode()方法,确保当两个对象的业务关键属性相同时,它们被视为相同。这样,Set会自动去除重复的对象: ```java @Override public boolean equals(Object o) { if (this == ...

    Java项目经验.docx

    迭代器(Iterator)用于遍历集合,而equals和hashCode方法用于对象比较,Comparable和Comparator接口则用于自定义排序规则。 反射机制允许程序在运行时动态地获取类的信息并调用其方法。Class类、Method类、Field类是...

    pojomatic-2.0.1.zip

    在Java编程中,equals(), hashCode()和toString()方法是Object类的三个重要方法,但它们往往需要根据具体业务需求进行重写。equals()用于比较两个对象是否相等,hashCode()用于对象在哈希表中的定位,而toString()则...

    allequals:Java equalshashCode 基准代码

    测试可能包括不同策略的比较,比如简单的属性比较、深比较、以及使用工具类如Apache Commons Lang的EqualsBuilder和HashCodeBuilder。 总结来说,`equals()` 和 `hashCode()` 在Java中是核心的比较和哈希机制,正确...

    74个java面试题,只有题目没有答案

    使用 Date 和 Calendar 等类进行日期和时间处理。 23. Java 连接池 * 什么是连接池?连接池是一种机制,用于重用数据库连接。 24. Java SOAP 和 RESTful Web 服务 * 什么是 SOAP 和 RESTful Web 服务?SOAP...

    Java 最常见 200+ 面试题全解析:面试必备.docx

    对于引用类型,默认情况下 `==` 比较的是地址,而 `equals` 通常比较的是值(在类重写了 `equals` 方法的情况下)。 3. **两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?** - 不对。两个对象的 ...

    sonarqube静态缺陷识别

    - **"equals(Object obj)" and "hashCode()" should be overridden in pairs**:为了保持对象一致性,当重写equals方法时,也应该同时重写hashCode方法。 SonarQube的静态缺陷识别功能帮助开发者在早期阶段发现并...

    java面试必看---基础

    当重写equals时,应同时重写hashCode以保持一致性。 21. **值传递**:Java中所有参数传递都是值传递,对于对象,传递的是对象引用的副本,而不是对象本身。 22. **String**:String是不可变对象,这意味着一旦创建...

    对于java集合类的一个简单介绍

    HashSet存储的对象,需要重写hashCode()和equals()两个方法。 Iterator迭代器 Iterator是一种设计模式,提供了遍历集合的能力。Iterator提供了hasNext()和next()两个方法,分别用于检查是否有可迭代的元素和返回...

    java内部学习笔记.docx

    3. StringUtils类:Apache Commons Lang提供的字符串操作工具类。 4. StringBuilder类:可变的字符序列,效率高于String。 5. 正则表达式:用于模式匹配和字符串操作。 6. Date类:表示特定的瞬间,精确到毫秒。 7. ...

    javaSE-java-core.docx

    它定义了一些基本的方法,如`toString()`、`equals()`和`hashCode()`。 1. `toString()`方法:默认情况下,`toString()`返回的是类名加@加哈希码的十六进制形式。通常,我们会在自定义类中重写这个方法,以返回更...

    java面试题.pdf

    2. equals() 和 hashCode() 之间的关系:equals() 方法用来比较两个对象是否相等,hashCode() 方法用来生成对象的哈希码,两个对象的哈希码相同不一定相等。 3. final 关键字的作用:final 关键字用于修饰变量、方法...

    程序员成长学习要求

    - **equals与hashCode方法**:了解这两个方法的作用及其实现方式,特别是在自定义类时如何正确重写它们,这对于保证对象一致性至关重要。 - **Synchronized与Volatile关键字**:掌握这些关键字的用法以及它们如何...

    spark (2)spark开发环境搭建

    6. **代码生成功能**(Generate code):比如自动创建getter和setter方法、构造函数、hashCode/equals以及toString等方法。 7. **重写和实现方法**(Override methods, Implement methods):快速生成方法的重写和...

    java面试题总结

    - **Collections**:工具类,提供了对集合操作的方法。 #### 24. 什么时候用assert - **断言**:用于调试阶段检查程序状态,非正常情况下中断执行。 #### 25. GC是什么?为什么要有GC? - **GC**:Garbage ...

    Java String转换时为null的解决方法

    必须保证本类或者父类已经重写了Object类的toString方法,如果没有重写toString方法,将默认调用Object类的toString方法,返回getClass().getName() + '@' + Integer.toHexString(hashCode()),并不是obj的实际字符...

    hibernate_3.2_官方中文参考手册.

    - **4.3 实现equals()和hashCode()**:重写这两个方法,确保实体对象在集合中能正确比较和识别。 - **4.4 动态模型**:允许在运行时动态生成映射信息,适用于高度灵活的应用场景。 - **4.5 元组片断映射**:提供高级...

Global site tag (gtag.js) - Google Analytics