the right way to sort a linked list in java : i have this linked List

    class Node {
    Node next;
    int num;

    public Node(int val) {
        num = val;
        next = null;
    }
    }

    public class LinkedList {

    Node head;

    public LinkedList(int val) {
        head = new Node(val);
    }

    public void append(int val) {
        Node tmpNode = head;
        while (tmpNode.next != null) {
            tmpNode = tmpNode.next;
        }
        tmpNode.next = new Node(val);
    }
    public void print() {
        Node tmpNode = head;
        while (tmpNode != null) {
            System.out.print(tmpNode.num + " -> ");
            tmpNode = tmpNode.next;
        }
        System.out.print("null");
    }

    public static void main(String[] args) {
        LinkedList myList = new LinkedList(8);
        myList.append(7);
        myList.append(16);
        myList.print();
    }
    }
`

and i want to know how should I sort this linked list ... all i know that the sorting code based on this insert code ... i tried to change it but some how the numbers start to Disapper 

    public void insert(int val) {
    Node currentNode = head;
    Node nextNode = head.next;

    if (currentNode.num > val) {
        Node tmpNode = head;
        head = new Node(val);
        head.next = tmpNode;
        return;
    }

    if (nextNode != null && nextNode.num > val) {
        currentNode.next = new Node(val);
        currentNode.next.next = nextNode;
        return;
    }

    while (nextNode != null && nextNode.num < val) {
        currentNode = nextNode;
        nextNode = nextNode.next;
    }

    currentNode.next = new Node(val);
    currentNode.next.next = nextNode;
}