Class CharDeque
- All Implemented Interfaces:
Arrangeable,Ordered.OfChar,PrimitiveCollection<Character>,PrimitiveCollection.OfChar,Appendable,CharSequence,Comparable<CharList>,RandomAccess
char with efficient add and remove at the
beginning and end. This extends CharList and supports RandomAccess. Like CharList, it is a
PrimitiveCollection.OfChar, Arrangeable, and Ordered.OfChar.
Values in the backing array may wrap back to the beginning, making add and remove at the beginning and end O(1)
(unless the backing array needs to resize when adding). Deque functionality is provided via removeLast() and
addFirst(char).
Unlike most Deque implementations in the JDK, you can get and set items anywhere in the deque in constant time with
get(int) and set(int, char). Relative to a CharList, get(int) has slightly
higher overhead, but it still runs in constant time. Unlike ArrayDeque in the JDK, this implements
equals(Object) and hashCode(). This can provide what are effectively
ListIterators for iteration from an index or in reverse order.
Unlike
ArrayDeque or ArrayList, most methods that take an index here try to be "forgiving;" that is,
they treat negative indices as index 0, and too-large indices as the last index, rather than throwing an Exception,
except in some cases where the CharDeque is empty and an item from it is required. An exception is in
set(int, char), which allows prepending by setting a negative index, or appending by setting a too-large
index. This isn't a standard JDK behavior, and it doesn't always act how Deque or List is documented.
Some new methods are present here, or have been made public when they weren't before.
removeRange(int, int),
for instance, is now public, as is resize(int). New APIs include Deque-like methods that affect the middle
of the deque, such as peekAt(int) and pollAt(int). There are more bulk methods that work at the
head or tail region of the deque, such as addAllFirst(OfChar) and truncateFirst(int). There are
the methods from Arrangeable, and many default methods from PrimitiveCollection and Ordered.
In general, this is an improvement over
ArrayDeque in every type of functionality, and is mostly equivalent
to CharList as long as the performance of get(int) is adequate. Because it is array-backed, it
should usually be much faster than LinkedList, as well; only periodic resizing and modifications in the
middle of the List using an iterator should be typically faster for LinkedList.-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class com.github.tommyettinger.ds.CharList
CharList.CharListIteratorNested classes/interfaces inherited from interface com.github.tommyettinger.ds.Arrangeable
Arrangeable.ArrangeableList<T>Nested classes/interfaces inherited from interface com.github.tommyettinger.ds.PrimitiveCollection
PrimitiveCollection.OfBoolean, PrimitiveCollection.OfByte, PrimitiveCollection.OfChar, PrimitiveCollection.OfDouble, PrimitiveCollection.OfFloat, PrimitiveCollection.OfInt, PrimitiveCollection.OfLong, PrimitiveCollection.OfShort -
Field Summary
FieldsModifier and TypeFieldDescriptioncharThe value returned when nothing can be obtained from this deque and an exception is not meant to be thrown, such as when callingpeek()on an empty deque.protected CharDeque.CharDequeIteratorprotected CharDeque.CharDequeIteratorprotected intIndex of first element.protected intIndex of last element. -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new CharDeque which can hold 16 values without needing to resize the backing array.CharDeque(char[] a) Creates a new CharDeque using all the contents of the given array.CharDeque(char[] a, int offset, int count) Creates a new CharDeque usingcountitems froma, starting atoffset.CharDeque(int initialSize) Creates a new CharDeque which can hold the specified number of values without needing to resize the backing array.Copies the given CharDeque exactly into this one.CharDeque(Ordered.OfChar other) CharDeque(Ordered.OfChar other, int offset, int count) Creates a new CharDeque using all the contents of the given Collection.CharDeque(CharIterator iter) Creates a new instance containing the items in the specified iterator.CharDeque(CharSequence other) CharDeque(CharSequence other, int start, int end) Creates a new CharDeque from part of another CharSequence; start is inclusive and end is exclusive. -
Method Summary
Modifier and TypeMethodDescriptionbooleanadd(char t) Inserts the specified element into the deque represented by this deque (in other words, at the tail of this deque) if it is possible to do so immediately without violating capacity restrictions, returningtrueupon success and throwing anIllegalStateExceptionif no space is currently available.voidadd(char value1, char value2) voidadd(char value1, char value2, char value3) voidadd(char value1, char value2, char value3, char value4) booleanaddAll(char[] array) Exactly likeaddAll(OfChar), but takes an array instead of a PrimitiveCollection.OfChar.booleanaddAll(char[] array, int offset, int length) booleanaddAll(int index, char[] array) LikeaddAll(int, OfChar), but takes an array instead of a PrimitiveCollection.OfChar and inserts it so the first item will be at the givenindex.booleanaddAll(int index, char[] array, int offset, int length) LikeaddAll(int, OfChar), but takes an array instead of a PrimitiveCollection.OfChar, gets items starting atoffsetfrom that array, usinglengthitems, and inserts them so the item at the given offset will be at the givenindex.booleanaddAll(int index, Ordered.OfChar ord) LikeaddAll(int, OfChar), but takes an ord instead of a PrimitiveCollection.OfChar and inserts it so the first item will be at the givenindex.booleanaddAll(int index, Ordered.OfChar ord, int offset, int length) LikeaddAll(int, OfChar), but takes an array instead of a PrimitiveCollection.OfChar, gets items starting atoffsetfrom that array, usinglengthitems, and inserts them so the item at the given offset will be at the givenindex.booleanaddAll(int index, PrimitiveCollection.OfChar c) booleanbooleanbooleanaddAll(Ordered.OfChar ord) Exactly likeaddAll(OfChar), but takes an Ordered.OfChar instead of a PrimitiveCollection.OfChar.booleanaddAll(Ordered.OfChar ord, int offset, int length) booleanAdds all the elements in the specified collection at the end of this deque, as if by callingaddLast(char)on each one, in the order that they are returned by the collection's iterator.booleanaddAllFirst(char[] array) Exactly likeaddAllFirst(OfChar), but takes an array instead of a PrimitiveCollection.OfChar.booleanaddAllFirst(char[] array, int offset, int length) booleanExactly likeaddAllFirst(OfChar), but takes an ord instead of a PrimitiveCollection.OfChar.booleanaddAllFirst(Ordered.OfChar ord, int offset, int length) booleanAdds every item incto this in order at the start.booleanaddAllLast(char[] array) An alias foraddAll(char[]).booleanaddAllLast(char[] array, int offset, int length) An alias foraddAll(char[], int, int).booleanaddAllLast(Ordered.OfChar ord) An alias foraddAll(Ordered.OfChar).booleanaddAllLast(Ordered.OfChar ord, int offset, int length) An alias foraddAll(Ordered.OfChar, int, int).booleanAn alias foraddAll(OfChar), this adds every item incto this in order at the end.voidaddFirst(char value) Prepend given value to the head (enqueue to head).voidaddFirst(char value1, char value2) voidaddFirst(char value1, char value2, char value3) voidaddFirst(char value1, char value2, char value3, char value4) voidaddLast(char value) Appends given char to the tail (enqueue to tail).voidaddLast(char value1, char value2) voidaddLast(char value1, char value2, char value3) voidaddLast(char value1, char value2, char value3, char value4) append(boolean value) Appends either the four chars't', 'r', 'u', 'e'ifvalueis true, or the five chars'f', 'a', 'l', 's', 'e'if it is false.append(char c) append(double number) Appends the base-10 decimal or engineering textual form of the given number, without allocating.append(float number) Appends the base-10 decimal or engineering textual form of the given number, without allocating.append(int number) Appends the base-10 signed textual form of the given number, without allocating.append(long number) Appends the base-10 signed textual form of the given number, without allocating.append(CharSequence csq) append(CharSequence csq, int start, int end) Appends a literal newline (Unicode character u000A).charassign(int index, char item) Replaces the element at the specified position in this list with the specified element.voidclear()Removes all values from this deque.booleancontains(char o) Returnstrueif this deque contains the specified element.booleancontainsAll(CharList other) Returns true if this CharList contains, at least once, every item inother; otherwise returns false.Returns an iterator over the elements in this deque in reverse sequential order.descendingIterator(int index) Returns an iterator over the elements in this deque in reverse sequential order.booleanduplicateRange(int index, int count) Inserts the specified number of items at the specified index.charelement()Retrieves, but does not remove, the head of the queue represented by this deque (in other words, the first element of this deque).char[]ensureCapacity(int additional) Increases the size of the backing array to accommodate the specified number of additional items.protected intensureGap(int index, int gapSize) Make sure there is a "gap" of exactlygapSizevalues starting atindex.booleanCompares this with any other CharSequence for equality of length, contents, and order.booleanChecks if this is equal to another CharSequence, but runs all chars in both the given text and this throughCasing.caseUp(char)before comparing (making the comparison case-insensitive for almost all scripts in use today, except some situations for Georgian).charfirst()Returns the first (head) item in the deque (without removing it).charget(int index) Returns the element at the specified position in this deque.charGets the default value, which is the value returned when nothing can be obtained from this deque and an exception is not meant to be thrown, such as when calling peek() on an empty deque.chargetFirst()Retrieves, but does not remove, the first element of this deque.chargetLast()Retrieves, but does not remove, the last element of this deque.charGets a randomly selected item from this CharDeque, using the given random number generator.inthashCode()intindexOf(char search) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists.intindexOf(char search, int fromIndex) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists.intindexOf(CharSequence search) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists.intindexOf(CharSequence search, int fromIndex) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists.intindexOfIgnoreCase(char search) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists.intindexOfIgnoreCase(char search, int fromIndex) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists.intindexOfIgnoreCase(CharSequence search) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists.intindexOfIgnoreCase(CharSequence search, int fromIndex) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists.voidinsert(int index, char item) Inserts the specified element into this deque at the specified index.booleaninsertAll(int index, char[] array) Alias foraddAll(int, char[]).booleaninsertAll(int index, char[] array, int offset, int length) Alias foraddAll(int, char[], int, int).booleaninsertAll(int index, Ordered.OfChar ord) Alias foraddAll(int, Ordered.OfChar).booleaninsertAll(int index, Ordered.OfChar ord, int offset, int length) Alias foraddAll(int, Ordered.OfChar, int, int).booleaninsertAll(int index, PrimitiveCollection.OfChar c) An alias foraddAll(int, OfChar); inserts all elements in the specified collection into this list at the specified position.booleanisEmpty()Returns true if the deque is empty.iterator()Returns an iterator for the items in the deque.charlast()Returns the last (tail) item in the deque (without removing it).intlastIndexOf(char search) Returns the index of the last occurrence of value in the deque, or -1 if no such value exists.intlastIndexOf(char search, int fromIndex) Returns the index of last occurrence ofsearchin the deque, starting fromfromIndexand going backwards, or -1 if no such value exists.intlastIndexOf(CharSequence search) Returns the index of the last occurrence of value in the deque, or -1 if no such value exists.intlastIndexOf(CharSequence search, int fromIndex) Returns the index of the last occurrence of value in the deque, or -1 if no such value exists.intlastIndexOfIgnoreCase(char search) Returns the index of the last occurrence of value in the deque, or -1 if no such value exists.intlastIndexOfIgnoreCase(char search, int fromIndex) Returns the index of last occurrence ofsearchin the deque, starting fromfromIndexand going backwards, or -1 if no such value exists.intlastIndexOfIgnoreCase(CharSequence search) Returns the index of the last occurrence of value in the deque, or -1 if no such value exists.intlastIndexOfIgnoreCase(CharSequence search, int fromIndex) Returns the index of the last occurrence of value in the deque, or -1 if no such value exists.leftString(int length) Creates a new String by copying the given subrange of this CharDeque, from index 0 (inclusive) tolength(exclusive).line()Appends a literal newline (Unicode character u000A).listIterator(int index) Gets an iterator over this deque that starts at the given index.booleannotEmpty()Returns true if the deque has one or more items.booleanoffer(char t) Inserts the specified element into the queue represented by this deque (in other words, at the tail of this deque) if it is possible to do so immediately without violating capacity restrictions, returningtrueupon success andfalseif no space is currently available.booleanofferFirst(char t) Inserts the specified element at the front of this deque unless it would violate capacity restrictions.booleanofferLast(char t) Inserts the specified element at the end of this deque unless it would violate capacity restrictions.order()Returns this CharList, since it is its own order.padLeft(int count, char padWith) Addscountrepetitions ofpadWithto the start (left) of this list.padRight(int count, char padWith) Addscountrepetitions ofpadWithto the end (right) of this list.static CharDequeCallsparse(String, String, boolean)with brackets set to false.static CharDequeCreates a new collection and fills it by callingPrimitiveCollection.OfChar.addLegible(String, String, int, int)on either all ofstr(ifbracketsis false) orstrwithout its first and last chars (ifbracketsis true).static CharDequeCreates a new collection and fills it by callingPrimitiveCollection.OfChar.addLegible(String, String, int, int)with the given four parameters as-is.charpeek()Retrieves, but does not remove, the head of the queue represented by this deque (in other words, the first element of this deque), or returnsdefaultValueif this deque is empty.charpeekAt(int index) Returns the element at the specified position in this deque.charRetrieves, but does not remove, the first element of this deque, or returnsdefaultValueif this deque is empty.charpeekLast()Retrieves, but does not remove, the last element of this deque, or returnsdefaultValueif this deque is empty.charpoll()Retrieves and removes the head of the queue represented by this deque (in other words, the first element of this deque), or returnsdefaultValueif this deque is empty.charpoll(int index) Removes the element at the specified position in this deque.charpollAt(int index) Removes the element at the specified position in this deque.charRetrieves and removes the first element of this deque, or returnsdefaultValueif this deque is empty.charpollLast()Retrieves and removes the last element of this deque, or returnsdefaultValueif this deque is empty.charpop()Pops an element from the stack represented by this deque.voidpush(char t) Pushes an element onto the stack represented by this deque (in other words, at the head of this deque).charGets a randomly selected item from this CharDeque, using the given random number generator.charremove()Retrieves and removes the head of the queue represented by this deque (in other words, the first element of this deque).booleanremove(char o) Removes the first occurrence of the specified element from this deque.booleanRemoves from this CharList all occurrences of any elements contained in the specified collection.charremoveAt(int index) Removes the element at the specified position in this deque.booleanRemoves from this CharList element-wise occurrences of elements contained in the specified collection.charRemove the first item from the deque.booleanremoveFirstOccurrence(char o) Removes the first occurrence of the specified element from this deque.charRemove the last item from the deque.booleanremoveLastOccurrence(char o) Removes the last occurrence of the specified element from this deque.booleanremoveLastValue(char value) Removes the last instance of the specified value in the deque.voidremoveRange(int fromIndex, int toIndex) Removes from this list all the elements whose index is betweenfromIndex, inclusive, andtoIndex, exclusive.booleanremoveValue(char value) Removes the first instance of the specified value in the deque.voidreplaceAll(com.github.tommyettinger.function.CharToCharFunction operator) Replaces each element of this list with the result of applying the given operator to that element.char[]resize(int newSize) Resizes the backing array.booleanRemoves all items from this CharList that are not present somewhere inother, any number of times.voidreverse()Reverses this CharDeque in-place.rightString(int length) Creates a new String by copying the given subrange of this CharDeque, from indexsize() - length(inclusive) tosize()(exclusive).voidset(int index, char item) Replaces the element at the specified position in this list with the specified element.voidsetDefaultValue(char defaultValue) Sets the default value, which is the value returned when nothing can be obtained from this deque and an exception is not meant to be thrown, such as when calling peek() on an empty deque.char[]setSize(int newSize) Sets the list size, leaving any values beyond the current size undefined.char[]shrink()Reduces the size of the backing array to the size of the actual items.voidPseudo-randomly shuffles the order of this Ordered in-place.intsize()Returns the number of elements in this deque.voidsort()Sorts this deque in-place usingArrays.sort(char[], int, int)in ascending order.voidsort(int from, int to) UsesArrays.sort(char[], int, int)to sort a (clamped) subrange of this deque.voidsort(int from, int to, CharComparator comparator) Sorts the specified range of elements according to the order induced by the specified comparator using mergesort, orArrays.sort(char[], int, int)ifcis null.voidsort(CharComparator comparator) Sorts this deque in-place usingCharComparators.sort(char[], int, int, CharComparator).subSequence(int start, int end) Gets a new CharDeque from the given subrange, clamping start and end so that this will not throw any Exception.substring(int start, int end) Creates a new String by copying the given subrange of this CharDeque.voidswap(int first, int second) Switches the ordering of positionsfirstandsecond, without changing any items beyond that.char[]toArray()Returns an array containing all the elements in this collection.char[]toArray(char[] array) Ifarray.lengthat least equal toCharList.size(), this copies the contents of this intoarrayand returns it; otherwise, it allocates a new char array that can fit all the items in this, and proceeds to copy into that and return that.Simply returns all the char items in this as one String, with no delimiters.toString()Delegates toPrimitiveCollection.OfChar.toString(String, boolean)with a delimiter of", "and square brackets enabled.voidTrims the capacity of thisCharDequeinstance to be the deque's current size.voidtruncate(int newSize) Reduces the size of the deque to the specified size by bulk-removing items from the tail end.voidtruncateFirst(int newSize) Reduces the size of the deque to the specified size by bulk-removing from the head.voidtruncateLast(int newSize) Alias fortruncate(int).static CharDequewith()Constructs an empty deque.static CharDequewith(char item) Creates a new CharDeque that holds only the given item, but can be resized.static CharDequewith(char... varargs) Creates a new CharDeque that will hold the items in the given array or varargs.static CharDequewith(char item0, char item1) Creates a new CharDeque that holds only the given items, but can be resized.static CharDequewith(char item0, char item1, char item2) Creates a new CharDeque that holds only the given items, but can be resized.static CharDequewith(char item0, char item1, char item2, char item3) Creates a new CharDeque that holds only the given items, but can be resized.static CharDequewith(char item0, char item1, char item2, char item3, char item4) Creates a new CharDeque that holds only the given items, but can be resized.static CharDequewith(char item0, char item1, char item2, char item3, char item4, char item5) Creates a new CharDeque that holds only the given items, but can be resized.static CharDequewith(char item0, char item1, char item2, char item3, char item4, char item5, char item6) Creates a new CharDeque that holds only the given items, but can be resized.static CharDequewith(char item0, char item1, char item2, char item3, char item4, char item5, char item6, char item7) Creates a new CharDeque that holds only the given items, but can be resized.Methods inherited from class com.github.tommyettinger.ds.CharList
charAt, compareTo, compareWith, compareWithIgnoreCase, contains, containsIgnoreCase, keepsOrder, lengthMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface com.github.tommyettinger.ds.Arrangeable
rearrange, shuffleMethods inherited from interface java.lang.CharSequence
chars, codePointsMethods inherited from interface com.github.tommyettinger.ds.Ordered.OfChar
charAt, getOrderType, length, random, selectRanked, selectRankedIndexMethods inherited from interface com.github.tommyettinger.ds.PrimitiveCollection.OfChar
addAll, addDense, addDense, addLegible, addLegible, addVarargs, appendTo, appendTo, containsAll, containsAll, containsAll, containsAll, containsAny, containsAny, containsAny, containsAny, denseAppendTo, equalContents, forEach, removeAll, removeAll, removeAll, removeEach, removeEach, removeEach, removeIf, retainAll, retainAll, toDenseString, toString, toString, toString
-
Field Details
-
defaultValue
public char defaultValueThe value returned when nothing can be obtained from this deque and an exception is not meant to be thrown, such as when callingpeek()on an empty deque. -
head
protected int headIndex of first element. Logically smaller than tail. Unless empty, it points to a valid element inside the deque. -
tail
protected int tailIndex of last element. Logically bigger than head. Unless empty, it points to a valid element inside the deque. This may be the same as head, and is if there is one element in the deque (or none), that will be the case. -
descendingIterator1
-
descendingIterator2
-
-
Constructor Details
-
CharDeque
public CharDeque()Creates a new CharDeque which can hold 16 values without needing to resize the backing array. -
CharDeque
public CharDeque(int initialSize) Creates a new CharDeque which can hold the specified number of values without needing to resize the backing array.- Parameters:
initialSize- how large the backing array should be, without any padding
-
CharDeque
Creates a new CharDeque using all the contents of the given Collection.- Parameters:
coll- a Collection of char that will be copied into this and used in full- Throws:
NullPointerException- ifcollisnull
-
CharDeque
Creates a new instance containing the items in the specified iterator.- Parameters:
iter- an iterator that will have its remaining contents added to this- Throws:
NullPointerException- ifiterisnull
-
CharDeque
Copies the given CharDeque exactly into this one. Individual values will be shallow-copied.- Parameters:
deque- another CharDeque to copy- Throws:
NullPointerException- ifdequeisnull
-
CharDeque
-
CharDeque
public CharDeque(char[] a) Creates a new CharDeque using all the contents of the given array.- Parameters:
a- an array of char that will be copied into this and used in full- Throws:
NullPointerException- ifaisnull
-
CharDeque
public CharDeque(char[] a, int offset, int count) Creates a new CharDeque usingcountitems froma, starting atoffset. Ifcountis 0 or less, this will create an empty CharDeque with capacity 1.- Parameters:
a- an array of charoffset- where inato start using itemscount- how many items to use froma- Throws:
NullPointerException- ifaisnull
-
CharDeque
-
CharDeque
-
CharDeque
Creates a new CharDeque from part of another CharSequence; start is inclusive and end is exclusive.- Parameters:
other- a CharSequence to use part of, such as a String or a CharListstart- first index inotherto use, inclusiveend- last index inotherto use, exclusive
-
-
Method Details
-
order
Description copied from class:CharListReturns this CharList, since it is its own order. This is only here to satisfy theOrdered.OfCharinterface.- Specified by:
orderin interfaceOrdered.OfChar- Overrides:
orderin classCharList- Returns:
- this CharList
-
getDefaultValue
public char getDefaultValue()Gets the default value, which is the value returned when nothing can be obtained from this deque and an exception is not meant to be thrown, such as when calling peek() on an empty deque. Unless changed, the default value is usuallynull.- Returns:
- the current default value
-
setDefaultValue
public void setDefaultValue(char defaultValue) Sets the default value, which is the value returned when nothing can be obtained from this deque and an exception is not meant to be thrown, such as when calling peek() on an empty deque. Unless changed, the default value is usuallynull.- Parameters:
defaultValue- any char this can return instead of throwing an Exception, ornull
-
addLast
public void addLast(char value) Appends given char to the tail (enqueue to tail). Unless the backing array needs resizing, operates in O(1) time.- Parameters:
value- can be null
-
addLast
public void addLast(char value1, char value2) -
addLast
public void addLast(char value1, char value2, char value3) -
addLast
public void addLast(char value1, char value2, char value3, char value4) -
addFirst
public void addFirst(char value) Prepend given value to the head (enqueue to head). Unless backing array needs resizing, operates in O(1) time.- Parameters:
value- can be null- See Also:
-
addFirst
public void addFirst(char value1, char value2) -
addFirst
public void addFirst(char value1, char value2, char value3) -
addFirst
public void addFirst(char value1, char value2, char value3, char value4) -
trimToSize
public void trimToSize()Trims the capacity of thisCharDequeinstance to be the deque's current size. An application can use this operation to minimize the storage of aCharDequeinstance.- Overrides:
trimToSizein classCharList
-
shrink
public char[] shrink()Description copied from class:CharListReduces the size of the backing array to the size of the actual items. This is useful to release memory when many items have been removed, or if it is known that more items will not be added.- Overrides:
shrinkin classCharList- Returns:
CharList.items; this will be a different reference if this resized
-
ensureCapacity
public char[] ensureCapacity(int additional) Increases the size of the backing array to accommodate the specified number of additional items. Useful before adding many items to avoid multiple backing array resizes.- Overrides:
ensureCapacityin classCharList- Returns:
- the backing array this will use after this call
-
resize
public char[] resize(int newSize) Resizes the backing array. newSize should be greater than the current size; otherwise, newSize will be set to size and the resize to the same size will (for most purposes) be wasted effort. If this is not empty, this will rearrange the items internally to be linear and have the head at index 0, with the tail atsize - 1. This always allocates a new internal backing array. -
ensureGap
protected int ensureGap(int index, int gapSize) Make sure there is a "gap" of exactlygapSizevalues starting atindex. This can resize the backing array to achieve this goal. If possible, this will keep the same backing array and modify it in-place. The "gap" is not assigned null, and may contain old/duplicate references; calling code must overwrite the entire gap with additional values to ensure GC correctness.- Parameters:
index- the 0-based index in the iteration order where the gap will be presentgapSize- the number of items that will need filling in the gap, and can be filled without issues.- Returns:
- the position in the array where the gap will begin, which is unrelated to the index
-
addAll
-
addAll
-
removeFirst
public char removeFirst()Remove the first item from the deque. (dequeue from head) Always O(1).- Returns:
- removed char
- Throws:
NoSuchElementException- when the deque is empty
-
removeLast
public char removeLast()Remove the last item from the deque. (dequeue from tail) Always O(1).- Returns:
- removed char
- Throws:
NoSuchElementException- when the deque is empty- See Also:
-
offerFirst
public boolean offerFirst(char t) Inserts the specified element at the front of this deque unless it would violate capacity restrictions. When using a capacity-restricted deque, this method is generally preferable to theaddFirst(char)method, which can fail to insert an element only by throwing an exception.- Parameters:
t- the element to add- Returns:
trueif the element was added to this deque, elsefalse- Throws:
ClassCastException- if the class of the specified element prevents it from being added to this dequeNullPointerException- if the specified element is null and this deque does not permit null elementsIllegalArgumentException- if some property of the specified element prevents it from being added to this deque
-
offerLast
public boolean offerLast(char t) Inserts the specified element at the end of this deque unless it would violate capacity restrictions. When using a capacity-restricted deque, this method is generally preferable to theaddLast(char)method, which can fail to insert an element only by throwing an exception.- Parameters:
t- the element to add- Returns:
trueif the element was added to this deque, elsefalse- Throws:
ClassCastException- if the class of the specified element prevents it from being added to this dequeNullPointerException- if the specified element is null and this deque does not permit null elementsIllegalArgumentException- if some property of the specified element prevents it from being added to this deque
-
pollFirst
public char pollFirst()Retrieves and removes the first element of this deque, or returnsdefaultValueif this deque is empty. The default value is usuallynullunless it has been changed withsetDefaultValue(char).- Returns:
- the head of this deque, or
defaultValueif this deque is empty - See Also:
-
pollLast
public char pollLast()Retrieves and removes the last element of this deque, or returnsdefaultValueif this deque is empty. The default value is usuallynullunless it has been changed withsetDefaultValue(char).- Returns:
- the tail of this deque, or
defaultValueif this deque is empty - See Also:
-
getFirst
public char getFirst()Retrieves, but does not remove, the first element of this deque.This method differs from
peekFirstonly in that it throws an exception if this deque is empty.- Returns:
- the head of this deque
- Throws:
NoSuchElementException- if this deque is empty
-
getLast
public char getLast()Retrieves, but does not remove, the last element of this deque. This method differs frompeekLastonly in that it throws an exception if this deque is empty.- Returns:
- the tail of this deque
- Throws:
NoSuchElementException- if this deque is empty
-
peekFirst
public char peekFirst()Retrieves, but does not remove, the first element of this deque, or returnsdefaultValueif this deque is empty.- Returns:
- the head of this deque, or
defaultValueif this deque is empty
-
peekLast
public char peekLast()Retrieves, but does not remove, the last element of this deque, or returnsdefaultValueif this deque is empty.- Returns:
- the tail of this deque, or
defaultValueif this deque is empty
-
removeFirstOccurrence
public boolean removeFirstOccurrence(char o) Removes the first occurrence of the specified element from this deque. If the deque does not contain the element, it is unchanged. More formally, removes the first elementesuch thato == e(if such an element exists). Returnstrueif this deque contained the specified element (or equivalently, if this deque changed as a result of the call).- Parameters:
o- element to be removed from this deque, if present- Returns:
trueif an element was removed as a result of this call
-
removeLastOccurrence
public boolean removeLastOccurrence(char o) Removes the last occurrence of the specified element from this deque. If the deque does not contain the element, it is unchanged. More formally, removes the last elementesuch thato == e(if such an element exists). Returnstrueif this deque contained the specified element (or equivalently, if this deque changed as a result of the call).- Parameters:
o- element to be removed from this deque, if present- Returns:
trueif an element was removed as a result of this call
-
add
public boolean add(char t) Inserts the specified element into the deque represented by this deque (in other words, at the tail of this deque) if it is possible to do so immediately without violating capacity restrictions, returningtrueupon success and throwing anIllegalStateExceptionif no space is currently available. When using a capacity-restricted deque, it is generally preferable to useoffer.This method is equivalent to
addLast(char).- Specified by:
addin interfacePrimitiveCollection.OfChar- Overrides:
addin classCharList- Parameters:
t- the element to add- Returns:
true(as specified byCollection.add(E))
-
add
public void add(char value1, char value2) -
add
public void add(char value1, char value2, char value3) -
add
public void add(char value1, char value2, char value3, char value4) -
insert
public void insert(int index, char item) Inserts the specified element into this deque at the specified index. UnlikeofferFirst(char)andofferLast(char), this does not run in expected constant time unless the index is less than or equal to 0 (where it acts like offerFirst()) or greater than or equal tosize()(where it acts like offerLast()). -
offer
public boolean offer(char t) Inserts the specified element into the queue represented by this deque (in other words, at the tail of this deque) if it is possible to do so immediately without violating capacity restrictions, returningtrueupon success andfalseif no space is currently available. When using a capacity-restricted deque, this method is generally preferable to theadd(char)method, which can fail to insert an element only by throwing an exception.This method is equivalent to
offerLast(char).- Parameters:
t- the element to add- Returns:
trueif the element was added to this deque, elsefalse
-
remove
public char remove()Retrieves and removes the head of the queue represented by this deque (in other words, the first element of this deque). This method differs frompoll()only in that it throws an exception if this deque is empty.This method is equivalent to
removeFirst().- Returns:
- the head of the queue represented by this deque
- Throws:
NoSuchElementException- if this deque is empty
-
poll
public char poll()Retrieves and removes the head of the queue represented by this deque (in other words, the first element of this deque), or returnsdefaultValueif this deque is empty.This method is equivalent to
pollFirst().- Returns:
- the first element of this deque, or
defaultValueif this deque is empty
-
element
public char element()Retrieves, but does not remove, the head of the queue represented by this deque (in other words, the first element of this deque). This method differs frompeekonly in that it throws an exception if this deque is empty.This method is equivalent to
getFirst().- Returns:
- the head of the queue represented by this deque
- Throws:
NoSuchElementException- if this deque is empty
-
peek
public char peek()Retrieves, but does not remove, the head of the queue represented by this deque (in other words, the first element of this deque), or returnsdefaultValueif this deque is empty.This method is equivalent to
peekFirst().- Overrides:
peekin classCharList- Returns:
- the head of the queue represented by this deque, or
defaultValueif this deque is empty
-
addAll
Adds all the elements in the specified collection at the end of this deque, as if by callingaddLast(char)on each one, in the order that they are returned by the collection's iterator.When using a capacity-restricted deque, it is generally preferable to call
offerseparately on each element.An exception encountered while trying to add an element may result in only some of the elements having been successfully added when the associated exception is thrown.
- Specified by:
addAllin interfacePrimitiveCollection.OfChar- Parameters:
c- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call
-
addAllLast
An alias foraddAll(OfChar), this adds every item incto this in order at the end.- Parameters:
c- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call
-
addAllFirst
Adds every item incto this in order at the start. The iteration order ofcwill be preserved for the added items.- Parameters:
c- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call
-
insertAll
An alias foraddAll(int, OfChar); inserts all elements in the specified collection into this list at the specified position. Shifts the element currently at that position (if any) and any subsequent elements to the right (increases their indices). The new elements will appear in this list in the order that they are returned by the specified collection's iterator. The behavior of this operation is undefined if the specified collection is modified while the operation is in progress. (Note that this will occur if the specified collection is this list, and it's nonempty.)- Parameters:
index- index at which to insert the first element from the specified collectionc- collection containing elements to be added to this list- Returns:
trueif this list changed as a result of the call
-
addAll
-
addAll
public boolean addAll(char[] array) Exactly likeaddAll(OfChar), but takes an array instead of a PrimitiveCollection.OfChar.- Specified by:
addAllin interfacePrimitiveCollection.OfChar- Overrides:
addAllin classCharList- Parameters:
array- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAll
public boolean addAll(char[] array, int offset, int length) - Specified by:
addAllin interfacePrimitiveCollection.OfChar- Overrides:
addAllin classCharList- Parameters:
array- the elements to be inserted into this dequeoffset- the index of the first item in array to addlength- how many items, at most, to add from array into this- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAllLast
public boolean addAllLast(char[] array) An alias foraddAll(char[]).- Parameters:
array- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAllLast
public boolean addAllLast(char[] array, int offset, int length) An alias foraddAll(char[], int, int).- Parameters:
array- the elements to be inserted into this dequeoffset- the index of the first item in array to addlength- how many items, at most, to add from array into this- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAllFirst
public boolean addAllFirst(char[] array) Exactly likeaddAllFirst(OfChar), but takes an array instead of a PrimitiveCollection.OfChar.- Parameters:
array- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAllFirst
public boolean addAllFirst(char[] array, int offset, int length) LikeaddAllFirst(char[]), but only uses at mostlengthitems fromarray, starting atoffset. The order ofarraywill be preserved, starting at the head of the deque.- Parameters:
array- the elements to be inserted into this dequeoffset- the index of the first item in array to addlength- how many items, at most, to add from array into this- Returns:
trueif this deque changed as a result of the call- See Also:
-
insertAll
public boolean insertAll(int index, char[] array) Alias foraddAll(int, char[]).- Parameters:
index- the index in this deque's iteration order to place the first item inarrayarray- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call
-
insertAll
public boolean insertAll(int index, char[] array, int offset, int length) Alias foraddAll(int, char[], int, int).- Parameters:
index- the index in this deque's iteration order to place the first item inarrayarray- the elements to be inserted into this dequeoffset- the index of the first item in array to addlength- how many items, at most, to add from array into this- Returns:
trueif this deque changed as a result of the call
-
addAll
public boolean addAll(int index, char[] array) LikeaddAll(int, OfChar), but takes an array instead of a PrimitiveCollection.OfChar and inserts it so the first item will be at the givenindex. The order ofarraywill be preserved, starting at the given index in this deque.- Parameters:
index- the index in this deque's iteration order to place the first item inarrayarray- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAll
public boolean addAll(int index, char[] array, int offset, int length) LikeaddAll(int, OfChar), but takes an array instead of a PrimitiveCollection.OfChar, gets items starting atoffsetfrom that array, usinglengthitems, and inserts them so the item at the given offset will be at the givenindex. The order ofarraywill be preserved, starting at the given index in this deque.- Parameters:
index- the index in this deque's iteration order to place the first item inarrayarray- the elements to be inserted into this dequeoffset- the index of the first item in array to addlength- how many items, at most, to add from array into this- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAll
Exactly likeaddAll(OfChar), but takes an Ordered.OfChar instead of a PrimitiveCollection.OfChar.- Parameters:
ord- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAll
-
addAll
LikeaddAll(int, OfChar), but takes an ord instead of a PrimitiveCollection.OfChar and inserts it so the first item will be at the givenindex. The order ofordwill be preserved, starting at the given index in this deque.- Parameters:
index- the index in this deque's iteration order to place the first item inordord- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAll
LikeaddAll(int, OfChar), but takes an array instead of a PrimitiveCollection.OfChar, gets items starting atoffsetfrom that array, usinglengthitems, and inserts them so the item at the given offset will be at the givenindex. The order ofarraywill be preserved, starting at the given index in this deque.- Overrides:
addAllin classCharList- Parameters:
index- the index in this deque's iteration order to place the first item inarrayord- the elements to be inserted into this dequeoffset- the index of the first item in array to addlength- how many items, at most, to add from array into this- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAllLast
An alias foraddAll(Ordered.OfChar).- Parameters:
ord- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAllLast
An alias foraddAll(Ordered.OfChar, int, int).- Parameters:
ord- the elements to be inserted into this dequeoffset- the index of the first item in ord to addlength- how many items, at most, to add from ord into this- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAllFirst
Exactly likeaddAllFirst(OfChar), but takes an ord instead of a PrimitiveCollection.OfChar.- Parameters:
ord- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call- See Also:
-
addAllFirst
LikeaddAllFirst(Ordered.OfChar), but only uses at mostlengthitems fromord, starting atoffset. The order ofordwill be preserved, starting at the head of the deque.- Parameters:
ord- the elements to be inserted into this dequeoffset- the index of the first item in ord to addlength- how many items, at most, to add from ord into this- Returns:
trueif this deque changed as a result of the call- See Also:
-
insertAll
Alias foraddAll(int, Ordered.OfChar).- Parameters:
index- the index in this deque's iteration order to place the first item inordord- the elements to be inserted into this deque- Returns:
trueif this deque changed as a result of the call
-
insertAll
Alias foraddAll(int, Ordered.OfChar, int, int).- Parameters:
index- the index in this deque's iteration order to place the first item inordord- the elements to be inserted into this dequeoffset- the index of the first item in ord to addlength- how many items, at most, to add from ord into this- Returns:
trueif this deque changed as a result of the call
-
push
public void push(char t) Pushes an element onto the stack represented by this deque (in other words, at the head of this deque).This method is equivalent to
addFirst(char).- Parameters:
t- the element to push
-
pop
public char pop()Pops an element from the stack represented by this deque. In other words, removes and returns the first element of this deque.This method is equivalent to
removeFirst().- Overrides:
popin classCharList- Returns:
- the element at the front of this deque (which is the top of the stack represented by this deque)
- Throws:
NoSuchElementException- if this deque is empty
-
remove
public boolean remove(char o) Removes the first occurrence of the specified element from this deque. If the deque does not contain the element, it is unchanged. More formally, removes the first elementesuch thato == e(if such an element exists). Returnstrueif this deque contained the specified element (or equivalently, if this deque changed as a result of the call).This method is equivalent to
removeFirstOccurrence(char).- Specified by:
removein interfacePrimitiveCollection.OfChar- Overrides:
removein classCharList- Parameters:
o- element to be removed from this deque, if present- Returns:
trueif an element was removed as a result of this call
-
contains
public boolean contains(char o) Returnstrueif this deque contains the specified element. More formally, returnstrueif and only if this deque contains at least one elementesuch thato == e.- Specified by:
containsin interfacePrimitiveCollection.OfChar- Overrides:
containsin classCharList- Parameters:
o- element whose presence in this deque is to be tested- Returns:
trueif this deque contains the specified element
-
containsAll
Description copied from class:CharListReturns true if this CharList contains, at least once, every item inother; otherwise returns false.- Overrides:
containsAllin classCharList- Parameters:
other- an CharList- Returns:
- true if this contains every item in
other, otherwise false
-
size
public int size()Returns the number of elements in this deque.- Specified by:
sizein interfaceArrangeable- Specified by:
sizein interfacePrimitiveCollection<Character>- Overrides:
sizein classCharList- Returns:
- the number of elements in this deque
-
toArray
public char[] toArray()Returns an array containing all the elements in this collection. If this collection makes any guarantees as to what order its elements are returned by its iterator, this method must return the elements in the same order. The returned array's runtime component type ischar.The returned array will be "safe" in that no references to it are maintained by this collection. (In other words, this method must allocate a new array even if this collection is backed by an array). The caller is thus free to modify the returned array.
- Specified by:
toArrayin interfacePrimitiveCollection.OfChar- Overrides:
toArrayin classCharList- Returns:
- an array, whose runtime component
type is
char, containing all the elements in this collection
-
toArray
public char[] toArray(char[] array) Description copied from class:CharListIfarray.lengthat least equal toCharList.size(), this copies the contents of this intoarrayand returns it; otherwise, it allocates a new char array that can fit all the items in this, and proceeds to copy into that and return that.- Specified by:
toArrayin interfacePrimitiveCollection.OfChar- Overrides:
toArrayin classCharList- Parameters:
array- a char array that will be modified if it can fitCharList.size()items- Returns:
array, if it had sufficient size, or a new array otherwise, either with a copy of this
-
setSize
public char[] setSize(int newSize) Description copied from class:CharListSets the list size, leaving any values beyond the current size undefined.- Overrides:
setSizein classCharList- Returns:
CharList.items; this will be a different reference if this resized to a larger capacity
-
truncateLast
public void truncateLast(int newSize) Alias fortruncate(int).- Parameters:
newSize- the size this deque should have after this call completes, if smaller than the current size
-
truncate
public void truncate(int newSize) Reduces the size of the deque to the specified size by bulk-removing items from the tail end. If the deque is already smaller than the specified size, no action is taken. -
truncateFirst
public void truncateFirst(int newSize) Reduces the size of the deque to the specified size by bulk-removing from the head. If the deque is already smaller than the specified size, no action is taken.- Parameters:
newSize- the size this deque should have after this call completes, if smaller than the current size
-
removeRange
public void removeRange(int fromIndex, int toIndex) Removes from this list all the elements whose index is betweenfromIndex, inclusive, andtoIndex, exclusive. Shifts any succeeding elements to the left (reduces their index). This call shrinks the list by(toIndex - fromIndex)elements. IftoIndex==fromIndex, this operation has no effect. IffromIndexis 0 or less, this delegates totruncateFirst(int); iftoIndexis equal to or greater than the size of this collection, this delegates totruncate(int).
This is public here, not protected as in most JDK collections, because there are actually sometimes needs for this in user code.- Specified by:
removeRangein interfaceOrdered.OfChar- Overrides:
removeRangein classCharList- Parameters:
fromIndex- index of first element to be removed (inclusive)toIndex- index after last element to be removed (exclusive)
-
indexOf
public int indexOf(char search) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists. -
indexOf
public int indexOf(char search, int fromIndex) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists. This returnsfromIndexifvalueis present at that point, so if you chain calls to indexOf(), the subsequent fromIndex should be larger than the last-returned index. -
indexOfIgnoreCase
public int indexOfIgnoreCase(char search) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists. This compares the given CharSequence as if both it and this CharSequence have had every character converted to upper case byCasing.caseUp(char).- Overrides:
indexOfIgnoreCasein classCharList- Parameters:
search- the char to look for- Returns:
- An index of the first occurrence of value in the deque or -1 if no such value exists
-
indexOfIgnoreCase
public int indexOfIgnoreCase(char search, int fromIndex) Returns the index of the first occurrence of value in the deque, or -1 if no such value exists. This returnsfromIndexifvalueis present at that point, so if you chain calls to indexOf(), the subsequent fromIndex should be larger than the last-returned index. This compares the given CharSequence as if both it and this CharSequence have had every character converted to upper case byCasing.caseUp(char).- Overrides:
indexOfIgnoreCasein classCharList- Parameters:
search- the char to look forfromIndex- the initial index to check (zero-indexed, starts at the head, inclusive)- Returns:
- An index of first occurrence of value at or after fromIndex in the deque, or -1 if no such value exists
-
indexOf
Returns the index of the first occurrence of value in the deque, or -1 if no such value exists. -
indexOf
Returns the index of the first occurrence of value in the deque, or -1 if no such value exists. This returnsfromIndexifvalueis present at that point, so if you chain calls to indexOf(), the subsequent fromIndex should be larger than the last-returned index. -
indexOfIgnoreCase
Returns the index of the first occurrence of value in the deque, or -1 if no such value exists. This compares the given CharSequence as if both it and this CharSequence have had every character converted to upper case byCasing.caseUp(char).- Overrides:
indexOfIgnoreCasein classCharList- Parameters:
search- the CharSequence to look for- Returns:
- An index of the first occurrence of value in the deque or -1 if no such value exists
-
indexOfIgnoreCase
Returns the index of the first occurrence of value in the deque, or -1 if no such value exists. This returnsfromIndexifvalueis present at that point, so if you chain calls to indexOf(), the subsequent fromIndex should be larger than the last-returned index. This compares the given CharSequence as if both it and this CharSequence have had every character converted to upper case byCasing.caseUp(char).- Overrides:
indexOfIgnoreCasein classCharList- Parameters:
search- the CharSequence to look forfromIndex- the initial index to check (zero-indexed, starts at the head, inclusive)- Returns:
- An index of first occurrence of value at or after fromIndex in the deque, or -1 if no such value exists
-
lastIndexOf
public int lastIndexOf(char search) Returns the index of the last occurrence of value in the deque, or -1 if no such value exists.- Overrides:
lastIndexOfin classCharList- Parameters:
search- the char to look for- Returns:
- An index of the last occurrence of value in the deque or -1 if no such value exists
-
lastIndexOf
public int lastIndexOf(char search, int fromIndex) Returns the index of last occurrence ofsearchin the deque, starting fromfromIndexand going backwards, or -1 if no such value exists. This returnsfromIndexifsearchis present at that point, so if you chain calls to indexOf(), the subsequent fromIndex should be smaller than the last-returned index.- Overrides:
lastIndexOfin classCharList- Parameters:
search- the char to look forfromIndex- the initial index to check (zero-indexed, starts at the head, inclusive)- Returns:
- An index of last occurrence of value at or before fromIndex in the deque, or -1 if no such value exists
-
lastIndexOf
Returns the index of the last occurrence of value in the deque, or -1 if no such value exists.- Overrides:
lastIndexOfin classCharList- Parameters:
search- the CharSequence to look for- Returns:
- An index of the last occurrence of value in the deque or -1 if no such value exists
-
lastIndexOf
Returns the index of the last occurrence of value in the deque, or -1 if no such value exists. This returnsfromIndexifvalueis present at that point, so if you chain calls to indexOf(), the subsequent fromIndex should be larger than the last-returned index.- Overrides:
lastIndexOfin classCharList- Parameters:
search- the CharSequence to look forfromIndex- the initial index to check (zero-indexed, starts at the head, inclusive)- Returns:
- An index of last occurrence of value at or after fromIndex in the deque, or -1 if no such value exists
-
lastIndexOfIgnoreCase
public int lastIndexOfIgnoreCase(char search) Returns the index of the last occurrence of value in the deque, or -1 if no such value exists. This compares the given char as if both it and this CharSequence have had every character converted to upper case byCasing.caseUp(char).- Overrides:
lastIndexOfIgnoreCasein classCharList- Parameters:
search- the char to look for- Returns:
- An index of the last occurrence of value in the deque or -1 if no such value exists
-
lastIndexOfIgnoreCase
public int lastIndexOfIgnoreCase(char search, int fromIndex) Returns the index of last occurrence ofsearchin the deque, starting fromfromIndexand going backwards, or -1 if no such value exists. This returnsfromIndexifsearchis present at that point, so if you chain calls to indexOf(), the subsequent fromIndex should be smaller than the last-returned index. This compares the given char as if both it and this CharSequence have had every character converted to upper case byCasing.caseUp(char).- Overrides:
lastIndexOfIgnoreCasein classCharList- Parameters:
search- the char to look forfromIndex- the initial index to check (zero-indexed, starts at the head, inclusive)- Returns:
- An index of last occurrence of value at or before fromIndex in the deque, or -1 if no such value exists
-
lastIndexOfIgnoreCase
Returns the index of the last occurrence of value in the deque, or -1 if no such value exists. This compares the given CharSequence as if both it and this CharSequence have had every character converted to upper case byCasing.caseUp(char).- Overrides:
lastIndexOfIgnoreCasein classCharList- Parameters:
search- the CharSequence to look for- Returns:
- An index of the last occurrence of value in the deque or -1 if no such value exists
-
lastIndexOfIgnoreCase
Returns the index of the last occurrence of value in the deque, or -1 if no such value exists. This returnsfromIndexifvalueis present at that point, so if you chain calls to indexOf(), the subsequent fromIndex should be larger than the last-returned index. This compares the given CharSequence as if both it and this CharSequence have had every character converted to upper case byCasing.caseUp(char).- Overrides:
lastIndexOfIgnoreCasein classCharList- Parameters:
search- the CharSequence to look forfromIndex- the initial index to check (zero-indexed, starts at the head, inclusive)- Returns:
- An index of last occurrence of value at or after fromIndex in the deque, or -1 if no such value exists
-
listIterator
-
listIterator
Gets an iterator over this deque that starts at the given index.- Parameters:
index- the index to start iterating from in this deque- Returns:
- a reused iterator starting at the given index
-
removeValue
public boolean removeValue(char value) Removes the first instance of the specified value in the deque.- Parameters:
value- the char to remove- Returns:
- true if value was found and removed, false otherwise
-
removeLastValue
public boolean removeLastValue(char value) Removes the last instance of the specified value in the deque.- Parameters:
value- the char to remove- Returns:
- true if value was found and removed, false otherwise
-
removeAt
public char removeAt(int index) Removes the element at the specified position in this deque. Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the deque. -
pollAt
public char pollAt(int index) Removes the element at the specified position in this deque. Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the deque, orthe default valueif this is empty. This will not throw an Exception in normal usage, even if index is negative (which makes this simply returnpollFirst()) or greater than or equal tosize()(which makes this returnpollLast()).
This is an alias forpoll(int)for compatibility with primitive-backed lists and deques;poll(int)can refer to the method that removes an item by value, not by index, in those types.- Parameters:
index- the index of the element to be removed- Returns:
- the element previously at the specified position
-
poll
public char poll(int index) Removes the element at the specified position in this deque. Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the deque, orthe default valueif this is empty. This will not throw an Exception in normal usage, even if index is negative (which makes this simply returnpollFirst()) or greater than or equal tosize()(which makes this returnpollLast()).- Parameters:
index- the index of the element to be removed- Returns:
- the element previously at the specified position
-
removeAll
Description copied from class:CharListRemoves from this CharList all occurrences of any elements contained in the specified collection.- Specified by:
removeAllin interfacePrimitiveCollection.OfChar- Overrides:
removeAllin classCharList- Parameters:
c- a primitive collection of int items to remove fully, such as another CharList or a CharDeque- Returns:
- true if this list was modified.
-
removeEach
Description copied from class:CharListRemoves from this CharList element-wise occurrences of elements contained in the specified collection. Note that if a value is present more than once in this CharList, only one of those occurrences will be removed for each occurrence of that value inc. Ifchas the same contents as this CharList or has additional items, then removing each ofcwill clear this.- Specified by:
removeEachin interfacePrimitiveCollection.OfChar- Overrides:
removeEachin classCharList- Parameters:
c- a primitive collection of int items to remove one-by-one, such as another CharList or a CharDeque- Returns:
- true if this list was modified.
-
retainAll
Description copied from class:CharListRemoves all items from this CharList that are not present somewhere inother, any number of times.- Specified by:
retainAllin interfacePrimitiveCollection.OfChar- Overrides:
retainAllin classCharList- Parameters:
other- a PrimitiveCollection.OfChar that contains the items that this should keep, whenever present- Returns:
- true if this CharList changed as a result of this call, otherwise false
-
notEmpty
public boolean notEmpty()Returns true if the deque has one or more items.- Specified by:
notEmptyin interfacePrimitiveCollection<Character>- Overrides:
notEmptyin classCharList- Returns:
- true if the list has one or more items, or false otherwise
-
isEmpty
public boolean isEmpty()Returns true if the deque is empty.- Specified by:
isEmptyin interfaceCharSequence- Specified by:
isEmptyin interfaceOrdered.OfChar- Specified by:
isEmptyin interfacePrimitiveCollection<Character>- Overrides:
isEmptyin classCharList- Returns:
- true if the list is empty, or false if it has any items
-
subSequence
Gets a new CharDeque from the given subrange, clamping start and end so that this will not throw any Exception.- Specified by:
subSequencein interfaceCharSequence- Specified by:
subSequencein interfaceOrdered.OfChar- Overrides:
subSequencein classCharList- Parameters:
start- the start index, inclusive; clampedend- the end index, exclusive; clamped- Returns:
- a new CharDeque copied from the given subrange bounds
-
substring
Creates a new String by copying the given subrange of this CharDeque. -
leftString
Creates a new String by copying the given subrange of this CharDeque, from index 0 (inclusive) tolength(exclusive).- Overrides:
leftStringin classCharList- Parameters:
length- how many chars to use from the start onward- Returns:
- a new String copying the given subrange of this CharDeque
-
rightString
Creates a new String by copying the given subrange of this CharDeque, from indexsize() - length(inclusive) tosize()(exclusive).- Overrides:
rightStringin classCharList- Parameters:
length- how many chars to use from the start onward- Returns:
- a new String copying the given subrange of this CharDeque
-
append
- Specified by:
appendin interfaceAppendable- Overrides:
appendin classCharList
-
append
- Specified by:
appendin interfaceAppendable- Overrides:
appendin classCharList
-
append
- Specified by:
appendin interfaceAppendable- Overrides:
appendin classCharList
-
appendLine
Appends a literal newline (Unicode character u000A).- Overrides:
appendLinein classCharList- Returns:
- this, for chaining.
-
line
Appends a literal newline (Unicode character u000A). This is identical toappendLine()but is faster to type or recommend. -
append
Appends the base-10 signed textual form of the given number, without allocating. This usesBase.appendSigned(CharSequence, int). -
append
Appends the base-10 signed textual form of the given number, without allocating. This usesBase.appendSigned(CharSequence, long). This does not append a trailing'L'. -
append
Appends the base-10 decimal or engineering textual form of the given number, without allocating. This usesBase.appendGeneral(CharSequence, float). This does not append a trailing'f'. -
append
Appends the base-10 decimal or engineering textual form of the given number, without allocating. This usesBase.appendGeneral(CharSequence, double). -
append
Appends either the four chars't', 'r', 'u', 'e'ifvalueis true, or the five chars'f', 'a', 'l', 's', 'e'if it is false. -
first
public char first()Returns the first (head) item in the deque (without removing it).- Specified by:
firstin interfacePrimitiveCollection.OfChar- Overrides:
firstin classCharList- Returns:
- the first item, without modifying this
- Throws:
NoSuchElementException- when the deque is empty- See Also:
-
last
public char last()Returns the last (tail) item in the deque (without removing it).- Throws:
NoSuchElementException- when the deque is empty- See Also:
-
get
public char get(int index) Returns the element at the specified position in this deque. LikeArrayListorCharList, but unlikeLinkedList, this runs in O(1) time. It is expected to be slightly slower thanCharList.get(int), which also runs in O(1) time. Unlike get() in ArrayList or CharList, this considers negative indices to refer to the first item, and too-large indices to refer to the last item. That means it delegates togetFirst()orgetLast()in those cases instead of throwing anIndexOutOfBoundsException, though it may throw aNoSuchElementExceptionif the deque is empty and there is no item it can get.- Overrides:
getin classCharList- Parameters:
index- index of the element to return- Returns:
- the element at the specified position in this deque
- Throws:
NoSuchElementException- if the deque is empty
-
peekAt
public char peekAt(int index) Returns the element at the specified position in this deque. LikeArrayListorCharList, but unlikeLinkedList, this runs in O(1) time. It is expected to be slightly slower thanCharList.get(int), which also runs in O(1) time. Unlike get() in ArrayList or CharList, this considers negative indices to refer to the first item, and too-large indices to refer to the last item. That means it delegates topeekFirst()orpeekLast()in those cases instead of throwing anIndexOutOfBoundsException, and it will returnthe default valueif the deque is empty. Unless changed, the default value is usuallynull.- Parameters:
index- index of the element to return- Returns:
- the element at the specified position in this deque
-
assign
public char assign(int index, char item) Replaces the element at the specified position in this list with the specified element. If this deque is empty or the index is larger than the largest index currently in this deque, this delegates toaddLast(char)and returnsthe default value. If the index is negative, this delegates toaddFirst(char)and returnsthe default value.- Parameters:
index- index of the element to replaceitem- element to be stored at the specified position- Returns:
- the element previously at the specified position
-
set
public void set(int index, char item) Replaces the element at the specified position in this list with the specified element. If this deque is empty or the index is larger than the largest index currently in this deque, this delegates toaddLast(char)and returnsthe default value. If the index is negative, this delegates toaddFirst(char)and returnsthe default value. -
replaceAll
public void replaceAll(com.github.tommyettinger.function.CharToCharFunction operator) Description copied from class:CharListReplaces each element of this list with the result of applying the given operator to that element.- Overrides:
replaceAllin classCharList- Parameters:
operator- a CharToCharFunction (a functional interface defined in funderby)
-
duplicateRange
public boolean duplicateRange(int index, int count) Inserts the specified number of items at the specified index. The new items will have values equal to the values at those indices before the insertion, and the previous values will be pushed to after the duplicated range.- Overrides:
duplicateRangein classCharList- Parameters:
index- the first index to duplicatecount- how many items to duplicate
-
clear
public void clear()Removes all values from this deque. This operates in O(1) time.- Specified by:
clearin interfacePrimitiveCollection<Character>- Overrides:
clearin classCharList
-
iterator
Returns an iterator for the items in the deque. Remove is supported.
Reuses one of two iterators for this deque. For nested or multithreaded iteration, useCharDequeIterator(CharDeque).- Specified by:
iteratorin interfacePrimitiveCollection<Character>- Specified by:
iteratorin interfacePrimitiveCollection.OfChar- Overrides:
iteratorin classCharList- Returns:
- a
CharIterator; use its nextChar() method instead of next()
-
descendingIterator
Returns an iterator over the elements in this deque in reverse sequential order. The elements will be returned in order from last (tail) to first (head).
Reuses one of two descending iterators for this deque. For nested or multithreaded iteration, useCharDequeIterator(CharDeque, boolean).- Returns:
- an iterator over the elements in this deque in reverse sequence
-
descendingIterator
Returns an iterator over the elements in this deque in reverse sequential order. The elements will be returned in order fromindexbackwards to first (head).
Reuses one of two descending iterators for this deque. For nested or multithreaded iteration, useCharDequeIterator(CharDeque, boolean).- Parameters:
index- the index to start iterating from in this deque- Returns:
- an iterator over the elements in this deque in reverse sequence
-
toString
Delegates toPrimitiveCollection.OfChar.toString(String, boolean)with a delimiter of", "and square brackets enabled.- Specified by:
toStringin interfaceCharSequence- Overrides:
toStringin classCharList- Returns:
- the square-bracketed String representation of this CharDeque, with items separated by ", "
-
toDenseString
Description copied from class:CharListSimply returns all the char items in this as one String, with no delimiters. This is the same as callingString.valueOf(charList.items, 0, charList.size()).- Specified by:
toDenseStringin interfacePrimitiveCollection.OfChar- Overrides:
toDenseStringin classCharList- Returns:
- a String containing only the char items in this CharList
-
hashCode
public int hashCode()- Specified by:
hashCodein interfacePrimitiveCollection<Character>- Overrides:
hashCodein classCharList
-
equals
Compares this with any other CharSequence for equality of length, contents, and order.- Specified by:
equalsin interfacePrimitiveCollection<Character>- Overrides:
equalsin classCharList- Parameters:
object- the object to be compared for equality with this collection- Returns:
- true if this is equal to object, or false otherwise
-
equalsIgnoreCase
Checks if this is equal to another CharSequence, but runs all chars in both the given text and this throughCasing.caseUp(char)before comparing (making the comparison case-insensitive for almost all scripts in use today, except some situations for Georgian).- Overrides:
equalsIgnoreCasein classCharList- Parameters:
csq- any other CharSequence, such as a String, StringBuilder, or CharList- Returns:
- true if the chars in this are equivalent to those in
csqif compared as case-insensitive
-
swap
public void swap(int first, int second) Switches the ordering of positionsfirstandsecond, without changing any items beyond that.- Specified by:
swapin interfaceArrangeable- Specified by:
swapin interfaceOrdered.OfChar- Overrides:
swapin classCharList- Parameters:
first- the first position, must not be negative and must be less thansize()second- the second position, must not be negative and must be less thansize()
-
reverse
public void reverse()Reverses this CharDeque in-place.- Specified by:
reversein interfaceArrangeable- Specified by:
reversein interfaceOrdered.OfChar- Overrides:
reversein classCharList
-
shuffle
Description copied from interface:Ordered.OfCharPseudo-randomly shuffles the order of this Ordered in-place. You can seedrng, the random number generator, with an identical seed to reproduce a shuffle on two Ordered with the sameArrangeable.size().- Specified by:
shufflein interfaceArrangeable- Specified by:
shufflein interfaceOrdered.OfChar- Overrides:
shufflein classCharList- Parameters:
rng- anyRandomclass, such as one from juniper
-
sort
public void sort()Sorts this deque in-place usingArrays.sort(char[], int, int)in ascending order. -
sort
public void sort(int from, int to) UsesArrays.sort(char[], int, int)to sort a (clamped) subrange of this deque. -
sort
Sorts this deque in-place usingCharComparators.sort(char[], int, int, CharComparator). This should operate in O(n log(n)) time or less when the internals of the deque are continuous (the head is before the tail in the array). If the internals are not continuous, this takes an additional O(n) step (where n is less than the size of the deque) to rearrange the internals before sorting. You can pass null as the value forcomparator, which will make this use the natural ordering for char.- Specified by:
sortin interfaceOrdered.OfChar- Overrides:
sortin classCharList- Parameters:
comparator- the Comparator to use for char items; may be null to use the natural order of char items when char implements Comparable of char
-
sort
Description copied from class:CharListSorts the specified range of elements according to the order induced by the specified comparator using mergesort, orArrays.sort(char[], int, int)ifcis null. This purely usesCharComparators.sort(char[], int, int, CharComparator), and you can see its docs for more information. This clampsfromandtoto the valid range. -
getRandom
Gets a randomly selected item from this CharDeque, using the given random number generator. Throws aNoSuchElementExceptionif empty.- Parameters:
random- any Random or subclass of it, such asAlternateRandom.- Returns:
- a randomly selected item from this deque
-
random
Gets a randomly selected item from this CharDeque, using the given random number generator.- Specified by:
randomin interfaceOrdered.OfChar- Overrides:
randomin classCharList- Parameters:
random- any Random or subclass of it, such asAlternateRandom.- Returns:
- a randomly selected item from this deque, or the default value if empty
-
padLeft
Addscountrepetitions ofpadWithto the start (left) of this list. -
padRight
Addscountrepetitions ofpadWithto the end (right) of this list. -
with
Constructs an empty deque. This is usually less useful than just using the constructor, but can be handy in some code-generation scenarios when you don't know how many arguments you will have.- Returns:
- a new deque containing nothing
-
with
Creates a new CharDeque that holds only the given item, but can be resized.- Parameters:
item- one char item- Returns:
- a new CharDeque that holds the given item
-
with
Creates a new CharDeque that holds only the given items, but can be resized.- Parameters:
item0- a char itemitem1- a char item- Returns:
- a new CharDeque that holds the given items
-
with
Creates a new CharDeque that holds only the given items, but can be resized.- Parameters:
item0- a char itemitem1- a char itemitem2- a char item- Returns:
- a new CharDeque that holds the given items
-
with
Creates a new CharDeque that holds only the given items, but can be resized.- Parameters:
item0- a char itemitem1- a char itemitem2- a char itemitem3- a char item- Returns:
- a new CharDeque that holds the given items
-
with
Creates a new CharDeque that holds only the given items, but can be resized.- Parameters:
item0- a char itemitem1- a char itemitem2- a char itemitem3- a char itemitem4- a char item- Returns:
- a new CharDeque that holds the given items
-
with
public static CharDeque with(char item0, char item1, char item2, char item3, char item4, char item5) Creates a new CharDeque that holds only the given items, but can be resized.- Parameters:
item0- a char itemitem1- a char itemitem2- a char itemitem3- a char itemitem4- a char itemitem5- a char item- Returns:
- a new CharDeque that holds the given items
-
with
public static CharDeque with(char item0, char item1, char item2, char item3, char item4, char item5, char item6) Creates a new CharDeque that holds only the given items, but can be resized.- Parameters:
item0- a char itemitem1- a char itemitem2- a char itemitem3- a char itemitem4- a char itemitem5- a char itemitem6- a char item- Returns:
- a new CharDeque that holds the given items
-
with
public static CharDeque with(char item0, char item1, char item2, char item3, char item4, char item5, char item6, char item7) Creates a new CharDeque that holds only the given items, but can be resized.- Parameters:
item0- a char itemitem1- a char itemitem2- a char itemitem3- a char itemitem4- a char itemitem5- a char itemitem6- a char itemitem7- a char item- Returns:
- a new CharDeque that holds the given items
-
with
Creates a new CharDeque that will hold the items in the given array or varargs. This overload will only be used when a char array is supplied, or if varargs are used and there are 9 or more arguments.- Parameters:
varargs- either 0 or more char items, or an array of char- Returns:
- a new CharDeque that holds the given char items
-
parse
Callsparse(String, String, boolean)with brackets set to false.- Parameters:
str- a String that will be parsed in fulldelimiter- the delimiter between items in str- Returns:
- a new collection parsed from str
-
parse
Creates a new collection and fills it by callingPrimitiveCollection.OfChar.addLegible(String, String, int, int)on either all ofstr(ifbracketsis false) orstrwithout its first and last chars (ifbracketsis true). Each item is expected to be separated bydelimiter.- Parameters:
str- a String that will be parsed in full (depending on brackets)delimiter- the delimiter between items in strbrackets- if true, the first and last chars in str will be ignored- Returns:
- a new collection parsed from str
-
parse
Creates a new collection and fills it by callingPrimitiveCollection.OfChar.addLegible(String, String, int, int)with the given four parameters as-is.- Parameters:
str- a String that will have the given section parseddelimiter- the delimiter between items in stroffset- the first position to parse in str, inclusivelength- how many chars to parse, starting from offset- Returns:
- a new collection parsed from str
-