title: Is there an immutable singly linked list implementation in Java?
body: <p>Coming from functional background, I am looking for equivalent of immutable singly linked list in Java.</p>
  
  <p>Immutable singly linked lists give me freedom to define many lists with common tail. For example, if I have <code>list = [1,2,3]</code> and then I am creating two new lists:</p>
  
  <pre><code>first = [10 | list]
  second = [15 | list]
  </code></pre>
  
  <p>I am not copying the list. Internally it looks more like this:</p>
  
  <pre><code>first -&gt; 10 -&gt; 1 -&gt; 2 -&gt; 3 -&gt; null
  second -&gt; 15  /|\
  </code></pre>
  
  <p>I looked at Guava Lists, but I couldn't find information on implementation details. As far as I understand, it is a doubly linked list, so efficient prepend operation is impossible (please correct me, if I am wrong about that).</p>