@ohos.util.Vector (Linear Container Vector)
Vector is a linear data structure that is implemented based on arrays. When the memory of a vector is used up, a larger contiguous memory area is automatically allocated, all the elements are copied to the new memory area, and the current memory area is reclaimed. Vector can be used to efficiently access elements.
Both Vector and ArrayList are implemented based on arrays, but Vector provides more interfaces for operating the arrays. Both of them can dynamically adjust the capacity. Vector doubles the capacity each time, whereas ArrayList increases the capacity by 50%.
Recommended use case: Use Vector when the data volume is large.
This topic uses the following to identify the use of generics:
- T: Type
NOTE
The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version.
The APIs provided by this module are deprecated since API version 9. You are advised to use @ohos.util.ArrayList.
Modules to Import
import Vector from '@ohos.util.Vector';
Vector
Attributes
System capability: SystemCapability.Utils.Lang
Name | Type | Readable | Writable | Description |
---|---|---|---|---|
length | number | Yes | No | Number of elements in a vector (called container later). |
constructor
constructor()
A constructor used to create a Vector instance.
System capability: SystemCapability.Utils.Lang
Example
let vector : Vector<string | number | Array<number>> = new Vector();
add
add(element: T): boolean
Adds an element at the end of this container.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
element | T | Yes | Target element. |
Return value
Type | Description |
---|---|
boolean | Returns true if the element is added successfully; returns false otherwise. |
Example
class C1 {
name: string = ""
age: string = ""
}
let vector : Vector<string | number | C1 | Array<number>> = new Vector();
let result = vector.add("a");
let result1 = vector.add(1);
let b = [1, 2, 3];
let result2 = vector.add(b);
let c: C1 = {name : "Dylon", age : "13"};
let result3 = vector.add(c);
insert
insert(element: T, index: number): void
Inserts an element within the length range and moves its subsequent elements rightwards.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
element | T | Yes | Target element. |
index | number | Yes | Index of the position where the element is to be inserted. |
Example
let vector : Vector<string | number | Object | Array<number>> = new Vector();
vector.insert("A", 0);
vector.insert(0, 1);
vector.insert(true, 2);
has
has(element: T): boolean
Checks whether this container has the specified element.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
element | T | Yes | Target element. |
Return value
Type | Description |
---|---|
boolean | Returns true if the container has the specified element; returns false otherwise. |
Example
let vector : Vector<string> = new Vector();
let result = vector.has("squirrel");
vector.add("squirrel");
let result1 = vector.has("squirrel");
getIndexOf
getIndexOf(element: T): number
Obtains the index of the first occurrence of the specified element in this container.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
element | T | Yes | Target element. |
Return value
Type | Description |
---|---|
number | Returns the position index if obtained; returns -1 otherwise. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(2);
vector.add(1);
vector.add(2);
vector.add(4);
let result = vector.getIndexOf(2);
getLastIndexOf
getLastIndexOf(element: T): number
Obtains the index of the last occurrence of the specified element in this container.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
element | T | Yes | Target element. |
Return value
Type | Description |
---|---|
number | Returns the position index if obtained; returns -1 otherwise. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(2);
vector.add(1);
vector.add(2);
vector.add(4);
let result = vector.getLastIndexOf(2);
removeByIndex
removeByIndex(index: number): T
Searches for an element based on its index, removes the element after returning it, and moves its subsequent elements leftwards.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
index | number | Yes | Position index of the target element. |
Return value
Type | Description |
---|---|
T | Element removed. If the container is empty, undefined is returned. If the index is out of range, an exception is thrown. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(2);
vector.add(4);
let result = vector.removeByIndex(2);
remove
remove(element: T): boolean
Removes the first occurrence of the specified element from this container.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
element | T | Yes | Target element. |
Return value
Type | Description |
---|---|
boolean | Returns true if the element is removed successfully; returns false otherwise. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.remove(2);
removeByRange
removeByRange(fromIndex: number, toIndex: number): void
Removes from this container all of the elements within a range, including the element at the start position but not that at the end position.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
fromIndex | number | Yes | Index of the start position. |
toIndex | number | Yes | Index of the end position. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.removeByRange(2,4);
replaceAllElements
replaceAllElements(callbackFn: (value: T, index?: number, vector?: Vector<T>) => T, thisArg?: Object): void
Replaces all elements in this container with new elements, and returns the new ones.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
callbackFn | function | Yes | Callback invoked for replacement. |
thisArg | Object | No | Value of this to use when callbackFn is invoked. The default value is this instance. |
callbackFn
Name | Type | Mandatory | Description |
---|---|---|---|
value | T | Yes | Value of the element that is currently traversed. |
index | number | No | Position index of the element that is currently traversed. The default value is 0. |
vector | Vector<T> | No | Instance that calls the replaceAllElements API. The default value is this instance. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.replaceAllElements((value : number) : number => {
// Add the user operation logic based on the actual scenario.
return value;
});
forEach
forEach(callbackFn: (value: T, index?: number, vector?: Vector<T>) => void, thisArg?: Object): void
Uses a callback to traverse the elements in this container and obtain their position indexes.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
callbackFn | function | Yes | Callback invoked for replacement. |
thisArg | Object | No | Value of this to use when callbackFn is invoked. The default value is this instance. |
callbackFn
Name | Type | Mandatory | Description |
---|---|---|---|
value | T | Yes | Value of the element that is currently traversed. |
index | number | No | Position index of the element that is currently traversed. The default value is 0. |
vector | Vector<T> | No | Instance that calls the forEach API. The default value is this instance. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.forEach((value : number, index ?: number) : void => {
console.log("value:" + value, "index:" + index);
});
sort
sort(comparator?: (firstValue: T, secondValue: T) => number): void
Sorts elements in this container.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
comparator | function | No | Callback invoked for sorting. The default value is this instance. |
comparator
Name | Type | Mandatory | Description |
---|---|---|---|
firstValue | T | Yes | Previous element. |
secondValue | T | Yes | Next element. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.sort((a: number, b: number) => a - b);
vector.sort((a: number, b: number) => b - a);
vector.sort();
subVector
subVector(fromIndex: number, toIndex: number): Vector<T>
Obtains elements within a range in this container, including the element at the start position but not that at the end position, and returns these elements as a new Vector instance.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
fromIndex | number | Yes | Index of the start position. |
toIndex | number | Yes | Index of the end position. |
Return value
Type | Description |
---|---|
Vector<T> | New Vector instance obtained. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.add(6);
vector.add(8);
let result = vector.subVector(0,4);
let result1 = vector.subVector(2,4);
clear
clear(): void
Clears all elements in this container and sets its length to 0.
System capability: SystemCapability.Utils.Lang
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.clear();
clone
clone(): Vector<T>
Clones this container and returns a copy. The modification to the copy does not affect the original instance.
System capability: SystemCapability.Utils.Lang
Return value
Type | Description |
---|---|
Vector<T> | New Vector instance obtained. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.clone();
getCapacity
getCapacity(): number
Obtains the capacity of this container.
System capability: SystemCapability.Utils.Lang
Return value
Type | Description |
---|---|
number | Capacity obtained. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.getCapacity();
convertToArray
convertToArray(): Array<T>
Converts this container into an array.
System capability: SystemCapability.Utils.Lang
Return value
Type | Description |
---|---|
Array<T> | Array obtained. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.convertToArray();
isEmpty
isEmpty(): boolean
Checks whether this container is empty (contains no elements).
System capability: SystemCapability.Utils.Lang
Return value
Type | Description |
---|---|
boolean | Returns true if the container is empty; returns false otherwise. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.isEmpty();
increaseCapacityTo
increaseCapacityTo(newCapacity: number): void
Increases the capacity of this container.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
newCapacity | number | Yes | New capacity. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.increaseCapacityTo(2);
vector.increaseCapacityTo(12);
trimToCurrentLength
trimToCurrentLength(): void
Trims the capacity of this container into its current length.
System capability: SystemCapability.Utils.Lang
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.trimToCurrentLength();
toString
toString(): string
Uses commas (,) to concatenate elements in this container into a string.
System capability: SystemCapability.Utils.Lang
Return value
Type | Description |
---|---|
string | String obtained. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.toString();
copyToArray
copyToArray(array: Array<T>): void
Copies elements in this container into an array to overwrite elements of the same position indexes.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
array | Array<T> | Yes | Array to which the elements in the container will be copied. |
getFirstElement
getFirstElement(): T
Obtains the first element in this container.
System capability: SystemCapability.Utils.Lang
Return value
Type | Description |
---|---|
T | The first element obtained. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.getFirstElement();
getLastElement
getLastElement(): T
Obtains the last element in this container.
System capability: SystemCapability.Utils.Lang
Return value
Type | Description |
---|---|
T | The last element obtained. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.getLastElement();
getLastIndexFrom
getLastIndexFrom(element: T, index: number): number
Searches for an element backward from the specified position index and returns the position index of the element.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
element | T | Yes | Target element. |
index | number | Yes | Position index where the search starts. |
Return value
Type | Description |
---|---|
number | Returns the position index if obtained; returns -1 otherwise. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.getLastIndexFrom(4,3);
getIndexFrom
getIndexFrom(element: T, index: number): number
Searches for an element forward from the specified position index and returns the position index of the element.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
element | T | Yes | Target element. |
index | number | Yes | Position index where the search starts. |
Return value
Type | Description |
---|---|
number | Returns the position index if obtained; returns -1 otherwise. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.getIndexFrom(4, 3);
setLength
setLength(newSize: number): void
Sets a new length for this container.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
newSize | number | Yes | New length to set. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.setLength(8);
vector.setLength(2);
get
get(index: number): T
Obtains an element at the specified position in this container.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
index | number | Yes | Position index of the target element. |
Return value
Type | Description |
---|---|
T | Element obtained. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.get(2);
set
set(index: number, element: T): T
Replaces an element at the specified position in this container with a given element.
System capability: SystemCapability.Utils.Lang
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
index | number | Yes | Position index of the target element. |
element | T | Yes | Element to be used for replacement. |
Return value
Type | Description |
---|---|
T | New element. |
[Symbol.iterator]
[Symbol.iterator](): IterableIterator<T>
Obtains an iterator. Each item of the iterator is a JavaScript object.
NOTE
This API cannot be used in .ets files.
System capability: SystemCapability.Utils.Lang
Return value
Type | Description |
---|---|
IterableIterator<T> | Iterator obtained. |
Example
let vector : Vector<number> = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
// Method 1:
let nums: Array<number> = vector.convertToArray()
for (let item of nums) {
console.log("value:" + item);
}
// Method 2:
let iter = vector[Symbol.iterator]();
let temp: IteratorResult<number> = iter.next().value;
while(temp != undefined) {
console.log("value:" + temp);
temp = iter.next().value;
}