SkipList implementation in Java
The goal of a skip list is that you can do a find by doing a loop like:

Node find(T value){
    Node start = root;

    while(start!=null &amp;&amp; comp(start.value, value) != 0){

        if(comp(start.next.value, value) &lt; 0){
            start = start.next;
        }else{
            start = start.down;
        }

    }
    return start;
}


Note the comp helper function. I added that so you can easily make it use a custom Comparable&lt;T&gt; passed in during construction. 

This can be easily expanded to also keep a list of nodes to update should you want to insert/delete a value:

List&lt;Node&gt; findAllPrevs(T value){
    List&lt;Node&gt; prevs = new ArrayList&lt;&gt;();
    Node start = root;

    while(start!=null){

        if(comp(start.next.value, value) &lt; 0){
            start = start.next;
        }else{
            prevs.add(start);
            start = start.down;
        }

    }
    while(prevs.get(prevs.size()-1).down!=null){
        prevs.add(prevs.get(prevs.size()-1).down);
    }
    return prevs;
}


Then you only need to update the last depth nodes in prevs when you add or remove a value.