All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.andyshao.data.structure.CycleLinkedElmt Maven / Gradle / Ivy

The newest version!
package com.github.andyshao.data.structure;

import java.io.Serial;
import java.util.Objects;

/**
 * Cycle Linked Element
 * @param  data type
 */
public class CycleLinkedElmt implements Linked.LinkedElmt> {
    @Serial
    private static final long serialVersionUID = -5760089081060466955L;

    /**
     * Build {@link CycleLinked}
     * @return {@link CycleLinked}
     * @param  data type
     */
    public static  CycleLinkedElmt defaultElmt() {
        return new CycleLinkedElmt();
    }

    /**
     * Build {@link CycleLinked}
     * @param data data
     * @return {@link CycleLinked}
     * @param  data type
     */
    public static  CycleLinkedElmt defaultElmt(DAT data) {
        CycleLinkedElmt result = CycleLinkedElmt.defaultElmt();
        result.setData(data);
        return result;
    }

    /**data*/
    private DATA data;
    /**next element*/
    private CycleLinkedElmt next;

    @Override
    public DATA data() {
        return this.data;
    }

    @SuppressWarnings("unchecked")
    @Override
    public boolean equals(Object obj) {
        CycleLinkedElmt that;
        if (obj instanceof CycleLinkedElmt) {
            that = (CycleLinkedElmt) obj;
            if (this.next == this) return Objects.equals(this.data , that.data());
            else return Objects.equals(this.data , that.data()) && Objects.equals(this.next , that.next());
        } else return false;
    }

    @Override
    public int hashCode() {
        if (this.next == this) return this.data.hashCode();
        else return Objects.hash(this.data , this.next);
    }

    @Override
    public CycleLinkedElmt next() {
        return this.next;
    }

    @Override
    public void setData(DATA data) {
        this.data = data;
    }

    @Override
    public void setNext(CycleLinkedElmt next) {
        this.next = next;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy