public class SortedDLL> extends DoubleLinkedList { @Override public void addLast(T t) { } @Override public void addFirst(T t) { } @SuppressWarnings("unchecked") public void addSorted(Comparable t) { Node newest = new Node<>(t, null, null); if (head == null) { head = newest; tail = newest; size = 1; return; } Node curr = head; while (curr != null) { if (curr.data.compareTo((T) t) > 0) break; curr = curr.next; } if (curr == null) { tail.next = newest; newest.prev = tail; tail=newest; } else { // need to put in new node before curr Node tmp = curr.prev; if (tmp != null) tmp.next = newest; newest.prev = tmp; newest.next = curr; curr.prev = newest; if (curr==head) head=newest; } } public static void main(String[] args) { SortedDLL llr = new SortedDLL<>(); Rabbit ar = new Rabbit(BreedEnum.Angora, "C1"); llr.addSorted(ar); System.out.println(llr); llr.addSorted(new Rabbit(BreedEnum.DwarfDutch, "T1")); System.out.println(llr); llr.addSorted(new Rabbit(BreedEnum.FrenchLop, "M1")); System.out.println(llr); llr.addSorted(new Rabbit(BreedEnum.FrenchLop, "N1")); llr.addSorted(new Rabbit(BreedEnum.FrenchLop, "A1")); llr.addSorted(new Rabbit(BreedEnum.FrenchLop, "Z1")); System.out.println(llr); } }