Class DoubleArraySeq
public class DoubleArraySeq from the package edu.colorado.collections
A DoubleArraySeq keeps track of a sequence of double numbers. The sequence can have a special "current element," which is specified and accessed through four methods that are not available in the bag class (start, getCurrent, advance and isCurrent).
Limitations:
(1) The capacity of a sequence can change after it's created, but the maximum capacity is limited by the amount of free memory on the machine. The constructor, addAfter, addBefore, clone, and concatenation will result in an OutOfMemoryError when free memory is exhausted.
(2) A sequence's capacity cannot exceed the largest integer 2,147,483,647 (Integer.MAX_VALUE). Any attempt to create a larger capacity results in failure due to an arithmetic overflow.
public DoubleArraySeq()
Initialize an empty sequence with an initial capacity of 10. Note that the addAfter and addBefore methods work efficiently (without needing more memory) until this capacity is reached.
Postcondition:
This sequence is empty and has an initial capacity of 10.
Throws: outOfMemoryError
public DoubleArraySeq(int initialCapacity)
Initialize an empty sequence with a specified initial capacity. Note that the addAfter and addBefore methods work efficiently (without needing more memory) until this capacity is reached.
Parameters:
initialCapacity - the initial capacity of this sequence
Precondition:
initialCapacity is non-negative.
Postcondition:
This sequence is empty and has the given initial capacity.
Throws: IllegalArgumentException
Indicates that initialCapacity is negative.
Throws: OutOfMemoryError
Indicates insufficient memory for: new double [initialCapacity].
addAfter and addBefore
public void addAfter(double element)
public void addBefore(double element)
Adds a new element to this sequence, either before or after the current element. If this new element would take this sequence beyond its current capacity, then the capacity is increased before adding the new element.
Parameters:
element - the new element that is being added
Postcondition:
A new copy of the element has been added to this sequence. If there was a current element, then addAfter places the new element before the current element and addBefore places the new element before the current element. If there was no current element, then addAfter places the new element at the end of this sequence and addBefore places the new element at the front of this sequence. In all cases, the new element becomes the new current element of this sequence.
Throws: OutOfMemoryError
Note:
An attempt to increase the capacity beyond Integer. MAX_VALUE will cause this sequence to fail with an arithmetic overflow.
addAll
public void addAll(DoubleArraySeq addend)
Place the contents of another sequence at the end of this sequence.
Parameters:
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.
Throws: NuIlPointerException
Indicates that addend is null.
Throws: OutOfMemoryError
Indicates insufficient memory to increase the capacity of this sequence.
Note:
An attempt to increase the capacity beyond Integer. MAX_VALUE will cause this sequence to fail with an arithmetic overflow.
advance
public void advance( )
Move forward, so that the current element is now the next element in this sequence.
Precondition:
isCurrent ( ) returns true.
Postcondition:
If the current element was already the end element of this 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.
Throws: IllegalStateException
Indicates that there is no current element, so advance may not be called.
clone
public Object clone( )
Generate a copy Of this sequence.
Returns:
The return value is a copy of this sequence. Subsequent changes to the copy will not affect the original, nor vice versa. The return value must be typecast to a DoubleArraySeq before it is used.
Throws: OutOfMemoryError
Indicates insufficient memory for creating the clone.
concatenation
public static DoubleArraySeq concatenation(DoubleArraySeq s1, DoubleArraySeq s2)
Create a new sequence that contains all the elements from one sequence followed by another.
Parameters:
sl - the first of two sequences
s2 - the second of two sequences
Precondition:
Neither s1 nor s2 is null.
Returns:
a new sequence that has the elements of s1 followed by the elements of s2 (with no current element)
Throws: NullPointerException
Indicates that one of the arguments is null.
Throws: OutOfMemoryError
Indicates insufficient memory for the new sequence.
Note:
An attempt to increase the capacity beyond Integer.MAX_VALUE will cause this sequence to fail with an arithmetic overflow.
getCapacity
public int getCapacity( )
Accessor method to determine the current capacity of this sequence. The addBefore and addAfter methods works efficiently (without needing more memory) until this capacity is reached.
Returns:
the current capacity of this sequence
getCurrent
public double getCurrent( )
Accessor method to determine the current element of this sequence.
Precondition:
isCurrent( ) returns true.
Returns:
the current element of this sequence
Throws: IllegalStateException
Indicates that there is no current element.
isCurrent
public boolean isCurrent( )
Accessor method to determine whether this sequence has a specified current element that can be retrieved with the getCurrent method.
Returns:
true (there is a current element) or false (there is no current element at the moment)
removeCurrent
public boolean removeCurrent( )
Remove the current element from this sequence.
Precondition:
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.
Throws: IllegalStateException
Indicates that there is no current element, so removeCurrent may not be called.
size
public int size( )
Accessor method to determine the number of elements in this sequence.
Returns:
the number of elements in this sequence
start
public void start()
Set the current element at the front of this sequence.
Postcondition:
The front element of this sequence is now the current element (but if this sequence has no elements at all, then there is no current element).
trimToSize
public void trimToSize()
Reduce the current capacity of this sequence to its actual size (i.e., the number of elements it contains).
Postcondition:
This sequence's capacity has been changed to its current size.
Throws: OutOfMemoryError
Indicates insufficient memory for altering the capacity