Collections Data Structure Java

public class LinkStack {
  private LinkList list;
  public LinkStack() {
    list = new LinkList();
  }
  public void push(long j) {
    list.insertFirst(j);
  }
  public long pop() {
    return list.deleteFirst();
  }
  public boolean isEmpty() {
    return (list.isEmpty());
  }
  public void displayStack() {
    System.out.print("Stack: ");
    list.displayList();
  }
  public static void main(String[] args) {
    LinkStack theStack = new LinkStack();
    theStack.push(20);
    theStack.push(40);
    theStack.displayStack();
    theStack.push(60);
    theStack.push(80);
    theStack.displayStack();
    theStack.pop();
    theStack.pop();
    theStack.displayStack();
  }
  class LinkList {
    private Link first;
    public LinkList() {
      first = null;
    }
    public boolean isEmpty() {
      return (first == null);
    }
    public void insertFirst(long d) {
      Link newLink = new Link(d);
      newLink.next = first;
      first = newLink;
    }
    public long deleteFirst() {
      Link buf = first;
      first = first.next;
      return buf.data;
    }
    public void displayList() {
      Link current = first;
      while (current != null) {
        current.displayLink();
        current = current.next;
      }
      System.out.println("");
    }
    class Link {
      public long data; // data item
      public Link next; // next link in list
      public Link(long d) {
        data = d;
      }
      public void displayLink() {
        System.out.print(data + " ");
      }
    }
  }
}