No. But the testing program needs changes.
public class GenericLinkedListTester { public static void main( String[] args ) { // create an empty generic linked list GenericLinkedList<Bird> list = new GenericLinkedList<>(); // insert some Birds Bird bird = new Bird("Turdus", "migratoris", "Robin", 1 ); list.insertFirst( bird ); bird = new Bird("Cyanocitta", "cristata", "Blue Jay", 1 ); list.insertFirst( bird ); bird = new Bird("Spinus", "tristis", "Goldfinch", 1 ); list.insertFirst( bird ); list.traverse(); System.out.println("\n"); // test getFirst() System.out.println("First: " + list.getFirst() ); list.deleteFirst(); list.traverse(); System.out.println("\n"); System.out.println("New First: " + list.getFirst() ); // test increment bird = list.getFirst(); bird.incSightings(); list.traverse(); System.out.println("\n"); // test getLast() System.out.println("Last : " + list.getLast() ); } }
A better testing program would carefully test each case.
PS C:\Code> javac GenericLinkedListTester.java PS C:\Code> java GenericLinkedListTester Spinus tristis (Goldfinch) seen:1 Cyanocitta cristata (Blue Jay) seen:1 Turdus migratoris (Robin) seen:1 First: Spinus tristis (Goldfinch) seen:1 Cyanocitta cristata (Blue Jay) seen:1 Turdus migratoris (Robin) seen:1 New First: Cyanocitta cristata (Blue Jay) seen:1 Cyanocitta cristata (Blue Jay) seen:2 Turdus migratoris (Robin) seen:1 Last : Turdus migratoris (Robin) seen:1
(Another Brain Teaser: ) Look at the start of the program:
// create an empty generic linked list GenericLinkedList<Bird> list = new GenericLinkedList<>(); // insert some Birds Bird bird = new Bird("Turdus", "migratoris", "Robin", 1 ); list.insertFirst( bird ); bird = new Bird("Cyanocitta", "cristata", "Blue Jay", 1 ); list.insertFirst( bird ); bird = new Bird("Spinus", "tristis", "Goldfinch", 1 ); list.insertFirst( bird ); . . .
Now how many objects are constructed?
Keep in mind that String
s are objects.