Class LinkedArrayList
- java.lang.Object
-
- io.reactivex.rxjava3.internal.util.LinkedArrayList
-
public class LinkedArrayList extends java.lang.Object
A list implementation which combines an ArrayList with a LinkedList to avoid copying values when the capacity needs to be increased.The class is non final to allow embedding it directly and thus saving on object allocation.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) int
capacityHint
The capacity of each array segment.(package private) java.lang.Object[]
head
Contains the head of the linked array list if not null.(package private) int
indexInTail
The next available slot in the current tail.(package private) int
size
The total size of the list; written after elements have been added (release) and and when read, the value indicates how many elements can be safely read (acquire).(package private) java.lang.Object[]
tail
The tail array where new elements will be added.
-
Constructor Summary
Constructors Constructor Description LinkedArrayList(int capacityHint)
Constructor with the capacity hint of each array segment.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(java.lang.Object o)
Adds a new element to this list.java.lang.Object[]
head()
Returns the head buffer segment or null if the list is empty.int
size()
Returns the total size of the list.java.lang.String
toString()
-
-
-
Field Detail
-
capacityHint
final int capacityHint
The capacity of each array segment.
-
head
java.lang.Object[] head
Contains the head of the linked array list if not null. The length is always capacityHint + 1 and the last element is an Object[] pointing to the next element of the linked array list.
-
tail
java.lang.Object[] tail
The tail array where new elements will be added.
-
size
volatile int size
The total size of the list; written after elements have been added (release) and and when read, the value indicates how many elements can be safely read (acquire).
-
indexInTail
int indexInTail
The next available slot in the current tail.
-
-
Method Detail
-
add
public void add(java.lang.Object o)
Adds a new element to this list.- Parameters:
o
- the object to add, nulls are accepted
-
head
public java.lang.Object[] head()
Returns the head buffer segment or null if the list is empty.- Returns:
- the head object array
-
size
public int size()
Returns the total size of the list.- Returns:
- the total size of the list
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-