public class LinkedSeq
extends java.lang.Object
implements java.lang.Cloneable
LinkedSeq
is a sequence of references to Objects.
The sequence can have a special "current element," which is specified and
accessed through four methods that are not available in the bag classes
(start, getCurrent, advance,
and isCurrent
).
Limitations:
Beyond Long.MAX_VALUE
elements, the size
method
does not work. This is not a
problem for current implementations of the Java Virtual Machine (JVM).
But future JVMs could have heaps that allow linked lists longer than
Long.MAX_VALUE
.
Note:
This file contains only blank implementations ("stubs")
because this is a Programming Project for my students.Constructor and Description |
---|
LinkedSeq()
Initialize an empty sequence.
|
Modifier and Type | Method and Description |
---|---|
void |
addAfter(java.lang.Object element)
Adds a new element to this sequence, after the current element.
|
void |
addAll(LinkedSeq addend)
Place the contents of another sequence at the end of this sequence.
|
void |
addBefore(java.lang.Object element)
Adds a new element to this sequence, before the current element.
|
void |
advance()
Move forward, so that the current element is now the next element in
the sequence.
|
java.lang.Object |
clone()
Generate a copy of this sequence.
|
static LinkedSeq |
concatentation(LinkedSeq s1,
LinkedSeq s2)
Create a new sequence that contains all the elements from one sequence
followed by another.
|
java.lang.Object |
getCurrent()
Accessor method to determine the current capacity of this sequence.
|
boolean |
isCurrent()
Accessor method to determine whether this sequence has a specified current
element that can be retrieved with the
getCurrent method. |
void |
removeCurrent()
Remove the current element from this sequence.
|
long |
size()
Accessor method to determine the number of elements in this sequence.
|
void |
start()
Set the current element at the front of this sequence.
|
public LinkedSeq()
public void addAfter(java.lang.Object element)
element
- a reference to the new element that is being added
Postcondition:
A reference to the element has been added to this sequence. If there
was a current element, the new element is placed after the current
element. If there was no current element, the new element is placed at
the end of the sequence. In all cases, the new element becomes the new
current element of the sequence. Note that the newly added element may
be a null reference.java.lang.OutOfMemoryError
- Indicates insufficient memory for a new node.public void addBefore(java.lang.Object element)
element
- a reference to the new element that is being added
Postcondition:
A reference to the element has been added to this sequence. If there
was a current element, the new element is placed before the current
element. If there was no current element, the new element is placed at
the start of the sequence. In all cases, the new element becomes the new
current element of the sequence. Note that the newly added element may
be a null reference.java.lang.OutOfMemoryError
- Indicates insufficient memory for a new node.public void addAll(LinkedSeq addend)
addend
- a sequence whose contents will be placed at the end of this sequence
Precondition:
The parameter, addend
, is not null.
Postcondition:
The elements from addend
have been placed at the end of
this sequence. The current element of this sequence remains where it
was, and the addend
is also unchanged.java.lang.NullPointerException
- Indicates that addend is null.java.lang.OutOfMemoryError
- Indicates insufficient memory to increase the size of this sequence.public void advance()
isCurrent( )
returns true
.
Postcondition:
If the current element was already the end element of the sequence
(with nothing after it), then there is no longer any current element.
Otherwise, the new element is the element immediately after the
original current element.java.lang.IllegalStateException
- Indicates that there is no current element, so advance may not be
activated.public java.lang.Object clone()
clone
in class java.lang.Object
LinkedSeq
before it is used.java.lang.OutOfMemoryError
- Indicates insufficient memory for creating the clone.public static LinkedSeq concatentation(LinkedSeq s1, LinkedSeq s2)
s1
- the first of two sequencess2
- the second of two sequences
Precondition:
Neither s1
nor s2
is null.s1
followed by
s2
(with no current element)java.lang.NullPointerException
- Indicates that one of the arguments is null.java.lang.OutOfMemoryError
- Indicates insufficient memory for the new sequence.public java.lang.Object getCurrent()
addBefore
and addAfter
methods works efficiently
(without needing more memory) until this capacity is reached.public boolean isCurrent()
getCurrent
method.true
(there is a current element) or false
(there is no current element at the moment)public void removeCurrent()
isCurrent()
returns true
.
Postcondition:
The current element has been removed from this sequence, and the
following element (if there is one) is now the new current element.
If there was no following element, then there is now no current element.java.lang.IllegalStateException
- Indicates that there is no current element, so removeCurrent
may not be called.public long size()
public void start()