java equals on recursive apache commons

htt‮:sp‬//www.lautturi.com
java equals on recursive apache commons

In Apache Commons Lang, you can use the EqualsBuilder class to compare the contents of two objects for equality, including objects with recursive references. The EqualsBuilder class is part of the org.apache.commons.lang3.builder package and provides a convenient way to implement the equals() method of an object.

Here's an example of how to use the EqualsBuilder class to compare two objects with recursive references in Java:

import org.apache.commons.lang3.builder.EqualsBuilder;

public class Node {
    private int value;
    private Node next;

    public Node(int value, Node next) {
        this.value = value;
        this.next = next;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (obj == null || obj.getClass() != getClass()) {
            return false;
        }

        Node other = (Node) obj;
        return new EqualsBuilder()
                .append(value, other.value)
                .append(next, other.next)
                .isEquals();
    }
}

In this example, the Node class has two fields: value and next. The next field is a reference to another Node object, creating a recursive structure.

The equals() method is overridden to compare the contents of two Node objects for equality. The EqualsBuilder class is used to compare the value and next fields of the objects. The append() method is called for each field and passed the field values as arguments.

The isEquals() method is called at the end to determine if the objects are equal based on the field comparisons. If all the field comparisons return true, the isEquals() method returns true, indicating that the objects are equal. If any of the field comparisons return false, the isEquals() method returns false, indicating that the objects are not equal.

You can use the EqualsBuilder class to compare the contents of two objects with recursive references in a convenient way. Just call the append() method for each field and use the isEquals() method to determine if the objects are equal.

Created Time:2017-11-03 15:57:13  Author:lautturi