/** * Purely functional collections based on {@linkplain io.vavr.collection.Traversable}. * * <h2>Performance Characteristics of Vavr Collections</h2> * <table cellpadding="5" cellspacing="0" border="1" style="border-collapse: collapse"> * <caption>Time Complexity of Sequential Operations</caption> * <thead> * <tr> * <th> </th> * <th>head()</th> * <th>tail()</th> * <th>get(int)</th> * <th>update(int, T)</th> * <th>prepend(T)</th> * <th>append(T)</th> * </tr> * </thead> * <tbody> * <tr><td>{@linkplain io.vavr.collection.Array}</td><td><small>const</small></td><td><small>linear</small></td><td><small>const</small></td><td><small>const</small></td><td><small>linear</small></td><td><small>linear</small></td></tr> * <tr><td>{@linkplain io.vavr.collection.CharSeq}</td><td><small>const</small></td><td><small>linear</small></td><td><small>const</small></td><td><small>linear</small></td><td><small>linear</small></td><td><small>linear</small></td></tr> * <tr><td><em>{@linkplain io.vavr.collection.Iterator}</em></td><td><small>const</small></td><td><small>const</small></td><td>—</td><td>—</td><td>—</td><td>—</td></tr> * <tr><td>{@linkplain io.vavr.collection.List}</td><td><small>const</small></td><td><small>const</small></td><td><small>linear</small></td><td><small>linear</small></td><td><small>const</small></td><td><small>linear</small></td></tr> * <tr><td>{@linkplain io.vavr.collection.Queue}</td><td><small>const</small></td><td><small>const<sup>a</sup></small></td><td><small>linear</small></td><td><small>linear</small></td><td><small>const</small></td><td><small>const</small></td></tr> * <tr><td>{@linkplain io.vavr.collection.PriorityQueue}</td><td><small>log</small></td><td><small>log</small></td><td><small>—</small></td><td><small>—</small></td><td><small>log</small></td><td><small>log</small></td></tr> * <tr><td>{@linkplain io.vavr.collection.Stream}</td><td><small>const</small></td><td><small>const</small></td><td><small>linear</small></td><td><small>linear</small></td><td><small>const<sup>lazy</sup></small></td><td><small>const<sup>lazy</sup></small></td></tr> * <tr><td>{@linkplain io.vavr.collection.Vector}</td><td><small>const<sup>eff</sup></small></td><td><small>const<sup>eff</sup></small></td><td><small>const<sup>eff</sup></small></td><td><small>const<sup>eff</sup></small></td><td><small>const<sup>eff</sup></small></td><td><small>const<sup>eff</sup></small></td></tr> * </tbody> * </table> * <br> * <table cellpadding="5" cellspacing="0" border="1" style="border-collapse: collapse"> * <caption>Time Complexity of Map/Set Operations</caption> * <thead> * <tr> * <th> </th> * <th>contains/Key</th> * <th>add/put</th> * <th>remove</th> * <th>min</th> * </tr> * </thead> * <tbody> * <tr><td>{@linkplain io.vavr.collection.HashMap}</td><td><small>const<sup>eff</sup></small></td><td><small>const<sup>eff</sup></small></td><td><small>const<sup>eff</sup></small></td><td><small>linear</small></td></tr> * <tr><td>{@linkplain io.vavr.collection.HashSet}</td><td><small>const<sup>eff</sup></small></td><td><small>const<sup>eff</sup></small></td><td><small>const<sup>eff</sup></small></td><td><small>linear</small></td></tr> * <tr><td>{@linkplain io.vavr.collection.LinkedHashMap}</td><td><small>const<sup>eff</sup></small></td><td><small>const<sup>eff</sup></small></td><td><small>linear</small></td><td><small>linear</small></td></tr> * <tr><td>{@linkplain io.vavr.collection.LinkedHashSet}</td><td><small>const<sup>eff</sup></small></td><td><small>const<sup>eff</sup></small></td><td><small>linear</small></td><td><small>linear</small></td></tr> * <tr><td><em>{@linkplain io.vavr.collection.Tree}</em></td><td><small>log</small></td><td><small>log</small></td><td><small>log</small></td><td><small>log</small></td></tr> * <tr><td>{@linkplain io.vavr.collection.TreeMap}</td><td><small>log</small></td><td><small>log</small></td><td><small>log</small></td><td><small>log</small></td></tr> * <tr><td>{@linkplain io.vavr.collection.TreeSet}</td><td><small>log</small></td><td><small>log</small></td><td><small>log</small></td><td><small>log</small></td></tr> * </tbody> * </table> * <br> * <ul> * <li><small>const</small> · constant time</li> * <li><small>const<sup>a</sup></small> · amortized constant time, few operations may take longer</li> * <li><small>const<sup>eff</sup></small> · effectively constant time, depending on assumptions like distribution of hash keys</li> * <li><small>const<sup>lazy</sup></small> · lazy constant time, the operation is deferred</li> * <li><small>log</small> · logarithmic time</li> * <li><small>linear</small> · linear time</li> * </ul> */ package io.vavr.collection;