A sequence implementation is mutable if it includes operations that modify the value of this. A class representing mutable sequences implements a subset of the following operations:
interface SeqObject extends Seq {
void setFirst(T f); // this = this.updateFirst(f)
void setRest(Seq r); // this = this.updateRest(r)
void set(Seq v); // this = v
void setEltAt(int i, T val); // changes s[i] in this to val
void insert(Object o); // inserts o in front of s[0] in this
void remove(); // removes s[0] from this
}
As with immutable sequences, there are two basic implementation
schemes for mutable sequences: linked and contiguous. Mutation
complicates the implementation of linked representations, which we
examine in detail below.