Below are classes Node and LinkedList and the testing program for both. Note that this is not the best way of writing linked lists in Java (it allows unauthorized access to nodes), we will get to a better implementation later in the semester.

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

    public Node(int d) {
	data = d;
	next = null; // can skip this line: null is the default value
    }

    public int getData() {
	return data;
    }

    // return the next node
    public Node getNext() {
	return next;
    }

    // set the node 
    public void setNext(Node n) {
	next = n;
    }
}



// WARNING: this is not the best way of writing a list class
// in Java. It's better to make nodes invisible from outside
// and let the outside world see the data only. 
// We choose a more transparent implementation so that it's 
// easier to test. 

public class LinkedList {
    private Node first;

    public LinkedList() {
	first = null;
    }

    public boolean isEmpty() {
	return (first == null);
    }

    public Node getFirst() {
	return first;
    }

    public void setFirst(Node n) {
	first = n;
    }

    public void addFront(Node n) {
	n.setNext(first); 
	first = n;
    }
}



public class TestLinkedLists {
    public static void main(String [] args) {
	// testing nodes:
	Node first = new Node(5);
	Node second = new Node(6);
	first.setNext(second);
	System.out.println( (first.getNext()).getData() );
	first.setNext(null);
	System.out.println(first.getNext());

	// testing linked lists:
	LinkedList list = new LinkedList();

	// add the two nodes to the list
	list.setFirst(first);
	list.addFront(second);

	// print the list
	System.out.println("The list elements are:");
	Node n = list.getFirst(); // if the list is empty, first is null
	while(n != null) {
	    int data = n.getData();
	    System.out.println(data);
	    n = n.getNext();
	}

	// adding an element to the back of the list
	Node oneMore = new Node(7);
	n = list.getFirst(); // if the list is empty, first is null
	if (n == null) {
	    list.setFirst(oneMore);
	} else {
	    Node last = null; // initialize last to keep the compiler happy
	    while(n != null) {
		last = n; // last is "one step behind" n 
		n = n.getNext();
	    }
	    last.setNext(oneMore);
	}

	// print the list after adding an element
	System.out.println("The list elements after adding one more are:");
	n = list.getFirst(); // if the list is empty, first is null
	while(n != null) {
	    int data = n.getData();
	    System.out.println(data);
	    n = n.getNext();
	}
    }
}


This is an example from CSci 2101 course.