Кусочек моей работы, очень маленький: public class Node<T> { private final T data; private Node<T> prev; private Node<T> next; Node(Node<T> prev, T data, Node<T> next) { this.prev = prev; this.data = data; this.next = next; } T getData() { return data; } Node<T> getPrev() { return prev; } Node<T> getNext() { return next; } void setPrev(Node<T> prev) { this.prev = prev; } void setNext(Node<T> next) { this.next = next; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Node<?> node = (Node<?>) o; return Objects.equals(prev, node.prev) && Objects.equals(next, node.next) && Objects.equals(data, node.data); } @Override public int hashCode() { return Objects.hash(prev, next, data); } @Override public