Stack<E> class
A last-in-first-out (LIFO) stack implementation, mimicking Java's Stack.
This implementation extends Vector (represented as a List) and provides stack operations like push, pop, peek, and search. Elements are added and removed from the top of the stack.
Key Features:
- LIFO ordering: Last element added is first to be removed
- Dynamic sizing: Grows and shrinks as needed
- Vector-based: Built on top of a resizable array
- Thread-safe operations: All operations are atomic
Usage Examples:
final stack = Stack<String>();
// Push elements onto the stack
stack.push('first');
stack.push('second');
stack.push('third');
// Peek at the top element
print(stack.peek()); // 'third'
// Pop elements from the stack
print(stack.pop()); // 'third'
print(stack.pop()); // 'second'
// Check if empty
print(stack.empty()); // false
// Search for an element
print(stack.search('first')); // 1 (1-based position from top)
- Inheritance
- Available extensions
- Annotations
-
- @Generic(Stack)
Constructors
- Stack([E? defaultValue])
- Creates an empty Stack.
-
Stack.from(Iterable<
E> iterable, [E? defaultValue]) - Creates a Stack from an iterable.
- Stack.withCapacity(int capacity, [E? defaultValue])
- Creates a Stack with the specified initial capacity.
Properties
- capacity → int
-
Returns the current capacity of the underlying storage.
no setter
- first ↔ E
-
The first element.
getter/setter pairinherited-setteroverride-getter
- firstOrNull → T?
-
Available on Iterable<
The first element of this iterator, orT> , provided by the IterableExtensions extensionnull
if the iterable is empty.no setter - hashCode → int
-
The hash code for this object.
no setterinherited
-
indexed
→ Iterable<
(int, T)> -
Available on Iterable<
Pairs of elements of the indices and elements of this iterable.T> , provided by the IterableExtensions extensionno setter - isEmpty → bool
-
Whether this collection has no elements.
no setteroverride
- isNotEmpty → bool
-
Whether this collection has at least one element.
no setteroverride
- isOneAKind → bool
-
Available on List<
Checks if all list data have same value.T> , provided by the ListExtensions extensionno setter -
iterator
→ Iterator<
E> -
A new
Iterator
that allows iterating the elements of thisIterable
.no setteroverride - last ↔ E
-
The last element.
getter/setter pairinherited-setteroverride-getter
- lastOrNull → T?
-
Available on Iterable<
The last element of this iterable, orT> , provided by the IterableExtensions extensionnull
if the iterable is empty.no setter - length ↔ int
-
The number of objects in this list.
getter/setter pairoverride
-
nonNulls
→ Iterable<
T> -
Available on Iterable<
The non-T?> , provided by the NullableIterableExtensions extensionnull
elements of this iterable.no setter -
reversed
→ Iterable<
E> -
An Iterable of the objects in this list in reverse order.
no setterinherited
-
reverseIterator
→ Iterator<
E> -
Returns a reverse iterator over the elements from top to bottom.
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- single → E
-
Checks that this iterable has only one element, and returns that element.
no setteroverride
- singleOrNull → T?
-
Available on Iterable<
The single element of this iterator, orT> , provided by the IterableExtensions extensionnull
.no setter -
toJS
→ JSArray<
T> -
Available on List<
Converts this List to a JSArray by either casting, unwrapping, or cloning the List.T> , provided by the ListToJSArray extensionno setter -
toJSProxyOrRef
→ JSArray<
T> -
Available on List<
Converts this List to a JSArray by either casting, unwrapping, or proxying the List.T> , provided by the ListToJSArray extensionno setter -
wait
→ Future<
List< T> > -
Available on Iterable<
Waits for futures in parallel.Future< , provided by the FutureIterable extensionT> >no setter
Methods
-
add(
E element) → void -
Adds
value
to the end of this list, extending the length by one.override -
addAll(
Iterable< E> iterable) → void -
Appends all objects of
iterable
to the end of this list.override -
addAllIf(
ConditionTester< T> condition, Iterable<T> items) → void -
Available on List<
Adds all items from another list to a list if a condition is met.T> , provided by the ListExtensions extension -
addIf(
ConditionTester< T> condition, T element) → void -
Available on List<
Adds an item to a list if a condition is met.T> , provided by the ListExtensions extension -
all(
ConditionTester< T> test) → bool -
Available on Iterable<
Checks whether all elements of this iterable satisfyT> , provided by the IterableExtension extensiontest
. -
any(
bool test(E element)) → bool -
Checks whether any element of this iterable satisfies
test
.inherited -
asMap(
) → Map< int, E> -
An unmodifiable Map view of this list.
inherited
-
asNameMap(
) → Map< String, T> -
Available on Iterable<
Creates a map from the names of enum values to the values.T> , provided by the EnumByName extension -
byName(
String name) → T -
Available on Iterable<
Finds the enum value in this list with nameT> , provided by the EnumByName extensionname
. -
cast<
R> () → List< R> -
Returns a view of this list as a list of
R
instances.inherited -
clear(
) → void -
Removes all objects from this list; the length of the list becomes zero.
override
-
clone(
) → Stack< E> - Creates a copy of this Stack.
-
contains(
Object? element) → bool -
Whether the collection contains an element equal to
element
.override -
elementAt(
int index) → E -
Returns the
index
th element.inherited -
elementAtOrNull(
int index) → T? -
Available on Iterable<
The element at positionT> , provided by the IterableExtensions extensionindex
of this iterable, ornull
. -
empty(
) → bool - Returns true if the stack contains no elements.
-
ensureCapacity(
int minCapacity) → void - Ensures that the stack can hold at least the specified number of elements.
-
every(
bool test(E element)) → bool -
Checks whether every element of this iterable satisfies
test
.inherited -
expand<
T> (Iterable< T> f(E element)) → Iterable<T> -
Expands each element of this Iterable into zero or more elements.
inherited
-
fillRange(
int start, int end, [E? fill]) → void -
Overwrites a range of elements with
fillValue
.inherited -
filter(
ConditionTester< T> test) → Iterable<T> -
Available on Iterable<
Filters elements based on a predicate (alias forT> , provided by the IterableExtension extensionwhere
). -
filterWhere(
ConditionTester< T> test) → Iterable<T> -
Available on Iterable<
Filters elements based on a predicate.T> , provided by the IterableExtension extension -
find(
ConditionTester< T> test) → T? -
Available on Iterable<
Finds the first element that satisfies the given predicate.T> , provided by the IterableExtension extension -
findIndex(
ConditionTester< T> test) → int -
Available on Iterable<
Finds the index of the first element that satisfies the given predicate.T> , provided by the IterableExtension extension -
firstWhere(
bool test(E element), {E orElse()?}) → E -
The first element that satisfies the given predicate
test
.inherited -
firstWhereOrNull(
ConditionTester< T> test) → T? -
Available on Iterable<
Returns the first element that satisfies the predicate orT> , provided by the IterableExtension extensionnull
if none match. -
flatMap<
E> (Iterable< E> selector(T item)) → Iterable<E> -
Available on Iterable<
Flattens lists of items into a single iterable.T> , provided by the IterableExtension extension -
flatten<
E> (E? selector(T item)) → Iterable< E> -
Available on Iterable<
Transforms each element of the iterable into zero or more elements of typeT> , provided by the IterableExtension extensionE
and flattens the results. -
flattenIterable<
E> (Iterable< E> ? selector(T item)) → Iterable<E> -
Available on Iterable<
Transforms each element of the iterable into zero or more results of typeT> , provided by the IterableExtension extensionE
, and flattens the resulting collections into a single iterable. -
fold<
T> (T initialValue, T combine(T previousValue, E element)) → T -
Reduces a collection to a single value by iteratively combining each
element of the collection with an existing value
inherited
-
followedBy(
Iterable< E> other) → Iterable<E> -
Creates the lazy concatenation of this iterable and
other
.inherited -
forEach(
void action(E element)) → void -
Invokes
action
on each element of this iterable in iteration order.inherited -
get(
[int index = 0]) → T -
Available on Iterable<
Returns the element at the specified index.T> , provided by the IterableExtension extension -
getFirst(
) → T -
Available on Iterable<
Returns the first element of the iterable.T> , provided by the IterableExtension extension -
getLast(
) → T -
Available on Iterable<
Returns the last element of the iterable.T> , provided by the IterableExtension extension -
getRange(
int start, int end) → Iterable< E> -
Creates an Iterable that iterates over a range of elements.
inherited
-
group<
K> (K keySelector(T item)) → Map< K, List< T> > -
Available on Iterable<
Groups the elements of the iterable by a key returned from theT> , provided by the IterableExtension extensionkeySelector
function. -
groupBy<
K> (K keySelector(T item)) → Map< K, List< T> > -
Available on Iterable<
Groups elements of this iterable into a Map using the givenT> , provided by the IterableExtension extensionkeySelector
. -
groupByAndMap<
K, V> (K keySelector(T item), V valueSelector(T item)) → Map< K, List< V> > -
Available on Iterable<
Groups elements of this iterable into a Map usingT> , provided by the IterableExtension extensionkeySelector
, and appliesvalueSelector
to each element before storing it. -
indexOf(
Object? element, [int start = 0]) → int -
The first index of
element
in this list.override -
indexWhere(
bool test(E element), [int start = 0]) → int -
The first index in the list that satisfies the provided
test
.inherited -
indexWhereOrNull(
ConditionTester< T> test) → int? -
Available on Iterable<
Finds the index of an element that satisfies the predicate or returnsT> , provided by the IterableExtension extensionnull
if not found. -
insert(
int index, E element) → void -
Inserts
element
at positionindex
in this list.override -
insertAll(
int index, Iterable< E> iterable) → void -
Inserts all objects of
iterable
at positionindex
in this list.inherited -
isLengthBetween(
int min, int max) → bool -
Available on Iterable<
Checks if length of double value is BETWEEN minLength to max.T> , provided by the IterableExtension extension -
isLengthEqualTo(
int other) → bool -
Available on Iterable<
Checks if length of double value is EQUAL to max.T> , provided by the IterableExtension extension -
isLengthEt(
int max) → bool -
Available on Iterable<
Short form forT> , provided by the IterableExtension extensionisLengthEqualTo
-
isLengthGreaterThan(
int max) → bool -
Available on Iterable<
Checks if length of double value is GREATER than max.T> , provided by the IterableExtension extension -
isLengthGreaterThanOrEqualTo(
int max) → bool -
Available on Iterable<
Checks if length of double value is GREATER OR EQUAL to max.T> , provided by the IterableExtension extension -
isLengthGt(
int max) → bool -
Available on Iterable<
Short form forT> , provided by the IterableExtension extensionisLengthGreaterThan
-
isLengthGtEt(
int max) → bool -
Available on Iterable<
Short form forT> , provided by the IterableExtension extensionisLengthGreaterThanOrEqualTo
-
isLengthLessThan(
int max) → bool -
Available on Iterable<
Checks if length of double value is LESS than max.T> , provided by the IterableExtension extension -
isLengthLessThanOrEqualTo(
int max) → bool -
Available on Iterable<
Checks if length of double value is LESS OR EQUAL to max.T> , provided by the IterableExtension extension -
isLengthLt(
int max) → bool -
Available on Iterable<
Short form forT> , provided by the IterableExtension extensionisLengthLessThan
-
isLengthLtEt(
int max) → bool -
Available on Iterable<
Short form forT> , provided by the IterableExtension extensionisLengthLessThanOrEqualTo
-
join(
[String separator = ""]) → String -
Converts each element to a String and concatenates the strings.
inherited
-
lastIndexOf(
Object? element, [int? start]) → int -
The last index of
element
in this list.override -
lastIndexWhere(
bool test(E element), [int? start]) → int -
The last index in the list that satisfies the provided
test
.inherited -
lastWhere(
bool test(E element), {E orElse()?}) → E -
The last element that satisfies the given predicate
test
.inherited -
lastWhereOrNull(
ConditionTester< T> test) → T? -
Available on Iterable<
Returns the last element that satisfies the predicate orT> , provided by the IterableExtension extensionnull
if none match. -
map<
T> (T f(E element)) → Iterable< T> -
The current elements of this iterable modified by
toElement
.inherited -
none(
ConditionTester< T> test) → bool -
Available on Iterable<
Checks if no element matches the predicate.T> , provided by the IterableExtension extension -
noneMatch(
ConditionTester< T> test) → bool -
Available on Iterable<
Checks if none of the elements match a condition using noneMatch.T> , provided by the IterableExtension extension -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
peek(
) → E - Returns the top element of the stack without removing it.
-
pop(
) → T? -
Available on List<
Removes and returns the last element of the list.T> , provided by the ListExtensions extension -
pop(
) → E - Removes and returns the top element of the stack.
-
process(
dynamic action(T item)) → void -
Available on Iterable<
Processes each element of the iterable using the providedT> , provided by the IterableExtension extensionaction
function. -
push(
E element) → E - Pushes an element onto the top of the stack.
-
reduce(
E combine(E previousValue, E element)) → E -
Reduces a collection to a single value by iteratively combining elements
of the collection using the provided function.
inherited
-
remove(
Object? element) → bool -
Removes the first occurrence of
value
from this list.override -
removeAllIf(
ConditionTester< T> condition, Iterable<T> items) → void -
Available on List<
Removes all items from another list if a condition is met.T> , provided by the ListExtensions extension -
removeAt(
int index) → E -
Removes the object at position
index
from this list.override -
removeIf(
ConditionTester< T> condition, T element) → void -
Available on List<
Removes an item from a list if a condition is met.T> , provided by the ListExtensions extension -
removeLast(
) → E -
Removes and returns the last object in this list.
inherited
-
removeRange(
int start, int end) → void -
Removes a range of elements from the list.
inherited
-
removeWhere(
bool test(E element)) → void -
Removes all objects from this list that satisfy
test
.inherited -
replaceRange(
int start, int end, Iterable< E> newContents) → void -
Replaces a range of elements with the elements of
replacements
.inherited -
retainWhere(
bool test(E element)) → void -
Removes all objects from this list that fail to satisfy
test
.inherited -
reverse(
) → List< T> -
Available on List<
Returns a new list with the elements in reverse order.T> , provided by the ListExtensions extension -
search(
Object? element) → int - Searches for an element in the stack and returns its 1-based position from the top.
-
setAll(
int index, Iterable< E> iterable) → void -
Overwrites elements with the objects of
iterable
.inherited -
setRange(
int start, int end, Iterable< E> iterable, [int skipCount = 0]) → void -
Writes some elements of
iterable
into a range of this list.inherited -
shift(
) → T? -
Available on List<
Removes and returns the first element of the list.T> , provided by the ListExtensions extension -
shuffle(
[Random? random]) → void -
Shuffles the elements of this list randomly.
inherited
-
singleWhere(
bool test(E element), {E orElse()?}) → E -
The single element that satisfies
test
.inherited -
skip(
int count) → Iterable< E> -
Creates an Iterable that provides all but the first
count
elements.inherited -
skipWhile(
bool test(E element)) → Iterable< E> -
Creates an
Iterable
that skips leading elements whiletest
is satisfied.inherited -
sort(
[int compare(E a, E b)?]) → void -
Sorts this list according to the order specified by the
compare
function.override -
sortedByPublicFirst(
) → List< T> -
Available on Iterable<
Sorts declarations with public visibility before private ones.T> , provided by the SortByPublic extension -
sortedByPublicFirstThenSyntheticLast(
) → List< T> -
Available on Iterable<
Sorts declarations with public visibility first and synthetic declarations last.T> , provided by the SortByPublic extension -
stream(
) → GenericStream< T> -
Available on Iterable<
Converts the iterable to a stream.T> , provided by the IterableExtension extension -
sublist(
int start, [int? end]) → List< E> -
Returns a new list containing the elements between
start
andend
.override -
take(
int count) → Iterable< E> -
Creates a lazy iterable of the
count
first elements of this iterable.inherited -
takeWhile(
bool test(E element)) → Iterable< E> -
Creates a lazy iterable of the leading elements satisfying
test
.inherited -
toList(
{bool growable = true}) → List< E> -
Creates a List containing the elements of this Iterable.
override
-
toMap<
K, V> (K keySelector(T item), V valueSelector(T item)) → Map< K, V> -
Available on Iterable<
Maps the iterable to a new iterable using the providedT> , provided by the IterableExtension extensionmapper
function. -
toSet(
) → Set< E> -
Creates a Set containing the same elements as this iterable.
inherited
-
toString(
) → String -
A string representation of this object.
override
-
trimToSize(
) → void - Trims the capacity to the current size.
-
where(
bool test(E element)) → Iterable< E> -
Creates a new lazy Iterable with all elements that satisfy the
predicate
test
.inherited -
whereOrNull(
ConditionTester< T> test) → Iterable<T> ? -
Available on Iterable<
Returns an iterable with elements that match a condition, orT> , provided by the IterableExtension extensionnull
if none match. -
whereType<
T> () → Iterable< T> -
Creates a new lazy Iterable with all elements that have type
T
.inherited -
whereType<
U> () → Iterable< T> -
Available on Iterable<
Filters elements of a specific typeT> , provided by the IterableExtension extensionT
.
Operators
-
operator +(
List< E> other) → List<E> -
Returns the concatenation of this list and
other
.inherited -
operator ==(
Object other) → bool -
The equality operator.
inherited
-
operator [](
int index) → E -
The object at the given
index
in the list.override -
operator []=(
int index, E value) → void -
Sets the value at the given
index
in the list tovalue
.override