## org.biojava.bio.symbol
Class SymbolList.EmptySymbolList

    java.lang.Object
      org.biojava.utils.Unchangeable
          org.biojava.bio.symbol.SymbolList.EmptySymbolList

All Implemented Interfaces:
  Changeable, java.io.Serializable, SymbolList

Enclosing class:
  SymbolList

public static class SymbolList.EmptySymbolList
extends Unchangeable
implements SymbolList, java.io.Serializable

The empty immutable implementation.

See Also:
  Serialized Form

Nested Class Summary

Nested classes inherited from class org.biojava.bio.symbol.SymbolList
`SymbolList.EmptySymbolList`

Field Summary

Fields inherited from interface org.biojava.bio.symbol.SymbolList
`EDIT, EMPTY_LIST`

Constructor Summary
`SymbolList.EmptySymbolList()`

Method Summary
`void` `edit(Edit edit)` Apply an edit to the SymbolList as specified by the edit object.
`Alphabet` `getAlphabet()` The alphabet that this SymbolList is over.
`java.util.Iterator` `iterator()` An Iterator over all Symbols in this SymbolList.
`int` `length()` The number of symbols in this SymbolList.
`java.lang.String` `seqString()` Stringify this symbol list.
`SymbolList` `subList(int start, int end)` Return a new SymbolList for the symbols start to end inclusive.
`java.lang.String` `subStr(int start, int end)` Return a region of this symbol list as a String.
`Symbol` `symbolAt(int index)` Return the symbol at index, counting from 1.
`java.util.List` `toList()` Returns a List of symbols.

Methods inherited from class org.biojava.utils.Unchangeable
`addChangeListener, addChangeListener, addForwarder, getForwarders, getListeners, isUnchanging, removeChangeListener, removeChangeListener, removeForwarder`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.biojava.utils.Changeable
`addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener`

Constructor Detail

### SymbolList.EmptySymbolList

    public SymbolList.EmptySymbolList()

Method Detail

### getAlphabet

    public Alphabet getAlphabet()

  Description copied from interface: `SymbolList`
  The alphabet that this SymbolList is over.

  Every symbol within this SymbolList is a member of this alphabet. `alphabet.contains(symbol) == true` for each symbol that is within this sequence.

  Specified by:
    `getAlphabet` in interface `SymbolList`
  Returns:
    the alphabet

### length

    public int length()

  Description copied from interface: `SymbolList`
  The number of symbols in this SymbolList.

  Specified by:
    `length` in interface `SymbolList`
  Returns:
    the length

### symbolAt

    public Symbol symbolAt(int index)
                    throws java.lang.IndexOutOfBoundsException

  Description copied from interface: `SymbolList`
  Return the symbol at index, counting from 1.

  Specified by:
    `symbolAt` in interface `SymbolList`
  Parameters:
    `index` - the offset into this SymbolList
  Returns:
    the Symbol at that index
  Throws:
    `java.lang.IndexOutOfBoundsException` - if index is less than 1, or greater than the length of the symbol list

### toList

    public java.util.List toList()

  Description copied from interface: `SymbolList`
  Returns a List of symbols.

  This is an immutable list of symbols. Do not edit it.

  Specified by:
    `toList` in interface `SymbolList`
  Returns:
    a List of Symbols

### iterator

    public java.util.Iterator iterator()

  Description copied from interface: `SymbolList`
  An Iterator over all Symbols in this SymbolList.

  This is an ordered iterator over the Symbols. It cannot be used to edit the underlying symbols.

  Specified by:
    `iterator` in interface `SymbolList`
  Returns:
    an iterator

### subList

    public SymbolList subList(int start,
                              int end)
                       throws java.lang.IndexOutOfBoundsException

  Description copied from interface: `SymbolList`
  Return a new SymbolList for the symbols start to end inclusive.

  The resulting SymbolList will count from 1 to (end-start + 1) inclusive, and refer to the symbols start to end of the original sequence.

  Specified by:
    `subList` in interface `SymbolList`
  Parameters:
    `start` - the first symbol of the new SymbolList
    `end` - the last symbol (inclusive) of the new SymbolList
  Throws:
    `java.lang.IndexOutOfBoundsException`

### seqString

    public java.lang.String seqString()

  Description copied from interface: `SymbolList`
  Stringify this symbol list.

  It is expected that this will use the symbol's token to render each symbol. It should be parsable back into a SymbolList using the default token parser for this alphabet.

  Specified by:
    `seqString` in interface `SymbolList`
  Returns:
    a string representation of the symbol list

### subStr

    public java.lang.String subStr(int start,
                                   int end)
                            throws java.lang.IndexOutOfBoundsException

  Description copied from interface: `SymbolList`
  Return a region of this symbol list as a String.

  This should use the same rules as seqString.

  Specified by:
    `subStr` in interface `SymbolList`
  Parameters:
    `start` - the first symbol to include
    `end` - the last symbol to include
  Returns:
    the string representation
  Throws:
    `java.lang.IndexOutOfBoundsException` - if either start or end are not within the SymbolList

### edit

    public void edit(Edit edit)
              throws java.lang.IndexOutOfBoundsException,
                     ChangeVetoException

  Description copied from interface: `SymbolList`
  Apply an edit to the SymbolList as specified by the edit object.

  ## Description

  All edits can be broken down into a series of operations that change contiguous blocks of the sequence. This represent a one of those operations.

  When applied, this Edit will replace 'length' number of symbols starting a position 'pos' by the SymbolList 'replacement'. This allow to do insertions (length=0), deletions (replacement=SymbolList.EMPTY_LIST) and replacements (length>=1 and replacement.length()>=1).

  The pos and pos+length should always be valid positions on the SymbolList to:

  - be edited (between 0 and symL.length()+1).
  - To append to a sequence, pos=symL.length()+1, pos=0.
  - To insert something at the beginning of the sequence, set pos=1 and length=0.

  ## Examples

  `

       SymbolList seq = DNATools.createDNA("atcaaaaacgctagc");
       System.out.println(seq.seqString());

       // delete 5 bases from position 4
       Edit ed = new Edit(4, 5, SymbolList.EMPTY_LIST);
       seq.edit(ed);
       System.out.println(seq.seqString());

       // delete one base from the start
       ed = new Edit(1, 1, SymbolList.EMPTY_LIST);
       seq.edit(ed);

       // delete one base from the end
       ed = new Edit(seq.length(), 1, SymbolList.EMPTY_LIST);
       seq.edit(ed);
       System.out.println(seq.seqString());

       // overwrite 2 bases from position 3 with "tt"
       ed = new Edit(3, 2, DNATools.createDNA("tt"));
       seq.edit(ed);
       System.out.println(seq.seqString());

       // add 6 bases to the start
       ed = new Edit(1, 0, DNATools.createDNA("aattgg");
       seq.edit(ed);
       System.out.println(seq.seqString());

       // add 4 bases to the end
       ed = new Edit(seq.length() + 1, 0, DNATools.createDNA("tttt"));
       seq.edit(ed);
       System.out.println(seq.seqString());

       // full edit
       ed = new Edit(3, 2, DNATools.createDNA("aatagaa");
       seq.edit(ed);
       System.out.println(seq.seqString());

  `

  Specified by:
    `edit` in interface `SymbolList`
  Parameters:
    `edit` - the Edit to perform
  Throws:
    `ChangeVetoException` - if either the SymboList does not support the edit, or if the change was vetoed
    `java.lang.IndexOutOfBoundsException` - if the edit does not lie within the SymbolList