Package dsa.lab03.exercises
Class CircularDynamicArray<Item>
java.lang.Object
dsa.lab03.exercises.CircularDynamicArray<Item>
- Type Parameters:
Item
- the item type
- All Implemented Interfaces:
Container<Item>
,DynamicSequence<Item>
,StaticSequence<Item>
,Iterable<Item>
A circular dynamic array.
A dynamic sequence implemented using an array with spare capacity and variable start index.
Dynamic operations only rarely reallocate a new array.
Improves on non-circular dynamic arrays' efficiencies with
and invalid reference
#insertFirst(Item)
DynamicSequence.removeFirst()
having (amortised) asymptotic complexity O(1).
-
Nested Class Summary
Nested classes/interfaces inherited from interface dsa.lab02.base.StaticSequence
StaticSequence.ForwardIterator<Item>, StaticSequence.ReverseIterator<Item>
-
Constructor Summary
ConstructorDescriptionConstruct an empty circular dynamic array.CircularDynamicArray
(Item... items) Construct a circular dynamic array containing the given items.CircularDynamicArray
(Iterable<Item> items) Construct a circular dynamic array containing the given items.CircularDynamicArray
(Iterable<Item> items, int size) Construct a circular dynamic array containing the given items more efficiently thanCircularDynamicArray(Iterable)
. -
Method Summary
Modifier and TypeMethodDescriptionint
capacity()
Get the maximum number of items that can be contained without reallocation.get
(int index) Get the item at the given index.void
Insert the given item at the given index.remove
(int index) Remove and return the item at the given index.void
Set the item at the given index.int
size()
Get the number of contained items.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface dsa.lab02.base.DynamicSequence
insertFirst, insertLast, removeFirst, removeLast
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
CircularDynamicArray
public CircularDynamicArray()Construct an empty circular dynamic array. -
CircularDynamicArray
Construct a circular dynamic array containing the given items.- Parameters:
items
- the items
-
CircularDynamicArray
Construct a circular dynamic array containing the given items more efficiently thanCircularDynamicArray(Iterable)
.- Parameters:
items
- the itemssize
- the number of items- Throws:
IllegalArgumentException
- ifsize
!=n
(wheren
isitems
's size)
-
CircularDynamicArray
Construct a circular dynamic array containing the given items.- Parameters:
items
- the items
-
-
Method Details
-
size
public int size()Description copied from interface:Container
Get the number of contained items. -
capacity
public int capacity()Get the maximum number of items that can be contained without reallocation.- Returns:
- the capacity
-
get
Description copied from interface:StaticSequence
Get the item at the given index.- Specified by:
get
in interfaceStaticSequence<Item>
- Parameters:
index
- the index- Returns:
- the item that is at that index
- Throws:
IndexOutOfBoundsException
- ifindex
< 0 orindex
>=n
(wheren
is the size)
-
set
Description copied from interface:StaticSequence
Set the item at the given index.Replaces whatever item was there before.
- Specified by:
set
in interfaceStaticSequence<Item>
- Parameters:
index
- the indexitem
- the new item that should now be at that index- Throws:
IndexOutOfBoundsException
- ifindex
< 0 orindex
>=n
(wheren
is the size)
-
insert
Description copied from interface:DynamicSequence
Insert the given item at the given index.Increments the size, as well as the indices of all items that had the same index or higher.
- Specified by:
insert
in interfaceDynamicSequence<Item>
- Parameters:
index
- the indexitem
- the new item- Throws:
IndexOutOfBoundsException
- ifindex
< 0 orindex
>n
(wheren
is the size)
-
remove
Description copied from interface:DynamicSequence
Remove and return the item at the given index.Decrements the size, as well as the indices of all items that had the same index or higher.
- Specified by:
remove
in interfaceDynamicSequence<Item>
- Parameters:
index
- the index- Returns:
- the item that was at that index
- Throws:
IndexOutOfBoundsException
- ifindex
< 0 orindex
>=n
(wheren
is the size)
-