1e41f4b71Sopenharmony_ci# @ohos.util.Deque (Linear Container Deque) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciDouble-ended queue (deque) is a sequence container implemented based on the queue data structure that follows the principles of First In First Out (FIFO) and Last In First Out (LIFO). It allows insertion and removal of elements at both the ends. **Deque** can dynamically adjust the capacity based on project requirements. It doubles the capacity each time. **Deque** differs from **[Queue](js-apis-queue.md)** and **[Vector](js-apis-vector.md)** mainly in the following aspects: 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci**Queue** follows the principle of FIFO only and allows element removal at the front and insertion at the rear. 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci**Vector** supports insertion and deletion of elements in between, as well as at both the ends. When compared with **Vector**, **Deque** is more efficient in inserting and removing header elements, but less efficient in accessing elements. 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci**Recommended use case**: Use **Deque** when you need to frequently insert or remove elements at both the ends of a container. 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ciThis topic uses the following to identify the use of generics: 12e41f4b71Sopenharmony_ci- T: Type 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci> **NOTE** 15e41f4b71Sopenharmony_ci> 16e41f4b71Sopenharmony_ci> 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. 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci## Modules to Import 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci```ts 22e41f4b71Sopenharmony_ciimport { Deque } from '@kit.ArkTS'; 23e41f4b71Sopenharmony_ci``` 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci## Deque 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci### Attributes 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci| Name| Type| Readable| Writable| Description| 34e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | -------- | 35e41f4b71Sopenharmony_ci| length | number | Yes| No| Number of elements in a deque (called container later).| 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci### constructor 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ciconstructor() 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ciA constructor used to create a **Deque** instance. 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci**Error codes** 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md). 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci| ID| Error Message| 52e41f4b71Sopenharmony_ci| -------- | -------- | 53e41f4b71Sopenharmony_ci| 10200012 | The Deque's constructor cannot be directly invoked. | 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ci**Example** 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci```ts 58e41f4b71Sopenharmony_cilet deque: Deque<string | number | boolean | Object> = new Deque(); 59e41f4b71Sopenharmony_ci``` 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci### insertFront 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ciinsertFront(element: T): void 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ciInserts an element at the front of this container. 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci**Parameters** 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description| 74e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 75e41f4b71Sopenharmony_ci| element | T | Yes| Target element.| 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci**Error codes** 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md). 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci| ID| Error Message| 82e41f4b71Sopenharmony_ci| -------- | -------- | 83e41f4b71Sopenharmony_ci| 10200011 | The insertFront method cannot be bound. | 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci**Example** 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci```ts 88e41f4b71Sopenharmony_ciclass C1 { 89e41f4b71Sopenharmony_ci name: string = "" 90e41f4b71Sopenharmony_ci age: string = "" 91e41f4b71Sopenharmony_ci} 92e41f4b71Sopenharmony_cilet deque: Deque<string | number | boolean | Array<number> | C1> = new Deque(); 93e41f4b71Sopenharmony_cideque.insertFront("a"); 94e41f4b71Sopenharmony_cideque.insertFront(1); 95e41f4b71Sopenharmony_cilet b = [1, 2, 3]; 96e41f4b71Sopenharmony_cideque.insertFront(b); 97e41f4b71Sopenharmony_cilet c: C1 = {name : "Dylan", age : "13"}; 98e41f4b71Sopenharmony_cideque.insertFront(c); 99e41f4b71Sopenharmony_cideque.insertFront(false); 100e41f4b71Sopenharmony_ci``` 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci### insertEnd 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ciinsertEnd(element: T): void 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ciInserts an element at the end of this container. 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang 111e41f4b71Sopenharmony_ci 112e41f4b71Sopenharmony_ci**Parameters** 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description| 115e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 116e41f4b71Sopenharmony_ci| element | T | Yes| Target element.| 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci**Error codes** 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md). 121e41f4b71Sopenharmony_ci 122e41f4b71Sopenharmony_ci| ID| Error Message| 123e41f4b71Sopenharmony_ci| -------- | -------- | 124e41f4b71Sopenharmony_ci| 10200011 | The insertEnd method cannot be bound. | 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci**Example** 127e41f4b71Sopenharmony_ci 128e41f4b71Sopenharmony_ci```ts 129e41f4b71Sopenharmony_ciclass C1 { 130e41f4b71Sopenharmony_ci name: string = "" 131e41f4b71Sopenharmony_ci age: string = "" 132e41f4b71Sopenharmony_ci} 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_cilet deque: Deque<string | number | boolean | Array<number> | C1> = new Deque(); 135e41f4b71Sopenharmony_cideque.insertEnd("a"); 136e41f4b71Sopenharmony_cideque.insertEnd(1); 137e41f4b71Sopenharmony_cilet b = [1, 2, 3]; 138e41f4b71Sopenharmony_cideque.insertEnd(b); 139e41f4b71Sopenharmony_cilet c: C1 = {name : "Dylan", age : "13"}; 140e41f4b71Sopenharmony_cideque.insertEnd(c); 141e41f4b71Sopenharmony_cideque.insertEnd(false); 142e41f4b71Sopenharmony_ci``` 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci### has 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_cihas(element: T): boolean 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ciChecks whether this container has the specified element. 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci**Parameters** 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description| 157e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 158e41f4b71Sopenharmony_ci| element | T | Yes| Target element.| 159e41f4b71Sopenharmony_ci 160e41f4b71Sopenharmony_ci**Return value** 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci| Type| Description| 163e41f4b71Sopenharmony_ci| -------- | -------- | 164e41f4b71Sopenharmony_ci| boolean | Returns **true** if the specified element is contained; returns **false** otherwise.| 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci**Error codes** 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md). 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci| ID| Error Message| 171e41f4b71Sopenharmony_ci| -------- | -------- | 172e41f4b71Sopenharmony_ci| 10200011 | The has method cannot be bound. | 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci**Example** 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci```ts 177e41f4b71Sopenharmony_cilet deque: Deque<string> = new Deque(); 178e41f4b71Sopenharmony_cideque.insertFront("squirrel"); 179e41f4b71Sopenharmony_cilet result = deque.has("squirrel"); 180e41f4b71Sopenharmony_ci``` 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci### popFirst 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_cipopFirst(): T 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ciRemoves the first element of this container. 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 189e41f4b71Sopenharmony_ci 190e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang 191e41f4b71Sopenharmony_ci 192e41f4b71Sopenharmony_ci**Return value** 193e41f4b71Sopenharmony_ci 194e41f4b71Sopenharmony_ci| Type| Description| 195e41f4b71Sopenharmony_ci| -------- | -------- | 196e41f4b71Sopenharmony_ci| T | First element removed.| 197e41f4b71Sopenharmony_ci 198e41f4b71Sopenharmony_ci**Error codes** 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md). 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_ci| ID| Error Message| 203e41f4b71Sopenharmony_ci| -------- | -------- | 204e41f4b71Sopenharmony_ci| 10200011 | The popFirst method cannot be bound. | 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci**Example** 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci```ts 209e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque(); 210e41f4b71Sopenharmony_cideque.insertFront(2); 211e41f4b71Sopenharmony_cideque.insertFront(4); 212e41f4b71Sopenharmony_cideque.insertEnd(5); 213e41f4b71Sopenharmony_cideque.insertFront(2); 214e41f4b71Sopenharmony_cideque.insertFront(4); 215e41f4b71Sopenharmony_cilet result = deque.popFirst(); 216e41f4b71Sopenharmony_ci``` 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci### popLast 219e41f4b71Sopenharmony_ci 220e41f4b71Sopenharmony_cipopLast(): T 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ciRemoves the last element of this container. 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 225e41f4b71Sopenharmony_ci 226e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci**Return value** 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci| Type| Description| 231e41f4b71Sopenharmony_ci| -------- | -------- | 232e41f4b71Sopenharmony_ci| T | Last element removed.| 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ci**Error codes** 235e41f4b71Sopenharmony_ci 236e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md). 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci| ID| Error Message| 239e41f4b71Sopenharmony_ci| -------- | -------- | 240e41f4b71Sopenharmony_ci| 10200011 | The popLast method cannot be bound. | 241e41f4b71Sopenharmony_ci 242e41f4b71Sopenharmony_ci**Example** 243e41f4b71Sopenharmony_ci 244e41f4b71Sopenharmony_ci```ts 245e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque(); 246e41f4b71Sopenharmony_cideque.insertFront(2); 247e41f4b71Sopenharmony_cideque.insertEnd(4); 248e41f4b71Sopenharmony_cideque.insertFront(5); 249e41f4b71Sopenharmony_cideque.insertFront(2); 250e41f4b71Sopenharmony_cideque.insertFront(4); 251e41f4b71Sopenharmony_cilet result = deque.popLast(); 252e41f4b71Sopenharmony_ci``` 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci### forEach 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_ciforEach(callbackFn: (value: T, index?: number, deque?: Deque<T>) => void, 257e41f4b71Sopenharmony_cithisArg?: Object): void 258e41f4b71Sopenharmony_ci 259e41f4b71Sopenharmony_ciUses a callback to traverse the elements in this container and obtain their position indexes. 260e41f4b71Sopenharmony_ci 261e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 262e41f4b71Sopenharmony_ci 263e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang 264e41f4b71Sopenharmony_ci 265e41f4b71Sopenharmony_ci**Parameters** 266e41f4b71Sopenharmony_ci 267e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description| 268e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 269e41f4b71Sopenharmony_ci| callbackFn | function | Yes| Callback invoked to traverse the elements in the container.| 270e41f4b71Sopenharmony_ci| thisArg | Object | No| Value of **this** to use when **callbackFn** is invoked. The default value is this instance.| 271e41f4b71Sopenharmony_ci 272e41f4b71Sopenharmony_cicallbackFn 273e41f4b71Sopenharmony_ci 274e41f4b71Sopenharmony_ci| Name| Type| Mandatory| Description| 275e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | 276e41f4b71Sopenharmony_ci| value | T | Yes| Value of the element that is currently traversed.| 277e41f4b71Sopenharmony_ci| index | number | No| Position index of the element that is currently traversed. The default value is **0**.| 278e41f4b71Sopenharmony_ci| deque | Deque<T> | No| Instance that calls the **forEach** API. The default value is this instance.| 279e41f4b71Sopenharmony_ci 280e41f4b71Sopenharmony_ci**Error codes** 281e41f4b71Sopenharmony_ci 282e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). 283e41f4b71Sopenharmony_ci 284e41f4b71Sopenharmony_ci| ID| Error Message| 285e41f4b71Sopenharmony_ci| -------- | -------- | 286e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 287e41f4b71Sopenharmony_ci| 10200011 | The forEach method cannot be bound. | 288e41f4b71Sopenharmony_ci 289e41f4b71Sopenharmony_ci**Example** 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci```ts 292e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque(); 293e41f4b71Sopenharmony_cideque.insertFront(2); 294e41f4b71Sopenharmony_cideque.insertEnd(4); 295e41f4b71Sopenharmony_cideque.insertFront(5); 296e41f4b71Sopenharmony_cideque.insertEnd(4); 297e41f4b71Sopenharmony_cideque.forEach((value: number, index?: number | undefined, deque?: Deque<number> | undefined):void => { 298e41f4b71Sopenharmony_ci console.log("value:" + value, "index:" + index); 299e41f4b71Sopenharmony_ci}); 300e41f4b71Sopenharmony_ci``` 301e41f4b71Sopenharmony_ci 302e41f4b71Sopenharmony_ci### getFirst 303e41f4b71Sopenharmony_ci 304e41f4b71Sopenharmony_cigetFirst(): T 305e41f4b71Sopenharmony_ci 306e41f4b71Sopenharmony_ciObtains the first element of this container. 307e41f4b71Sopenharmony_ci 308e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 309e41f4b71Sopenharmony_ci 310e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang 311e41f4b71Sopenharmony_ci 312e41f4b71Sopenharmony_ci**Return value** 313e41f4b71Sopenharmony_ci 314e41f4b71Sopenharmony_ci| Type| Description| 315e41f4b71Sopenharmony_ci| -------- | -------- | 316e41f4b71Sopenharmony_ci| T | First element of the T type obtained.| 317e41f4b71Sopenharmony_ci 318e41f4b71Sopenharmony_ci**Error codes** 319e41f4b71Sopenharmony_ci 320e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md). 321e41f4b71Sopenharmony_ci 322e41f4b71Sopenharmony_ci| ID| Error Message| 323e41f4b71Sopenharmony_ci| -------- | -------- | 324e41f4b71Sopenharmony_ci| 10200011 | The getFirst method cannot be bound. | 325e41f4b71Sopenharmony_ci 326e41f4b71Sopenharmony_ci**Example** 327e41f4b71Sopenharmony_ci 328e41f4b71Sopenharmony_ci```ts 329e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque(); 330e41f4b71Sopenharmony_cideque.insertEnd(2); 331e41f4b71Sopenharmony_cideque.insertEnd(4); 332e41f4b71Sopenharmony_cideque.insertFront(5); 333e41f4b71Sopenharmony_cideque.insertFront(4); 334e41f4b71Sopenharmony_cilet result = deque.getFirst(); 335e41f4b71Sopenharmony_ci``` 336e41f4b71Sopenharmony_ci 337e41f4b71Sopenharmony_ci### getLast 338e41f4b71Sopenharmony_ci 339e41f4b71Sopenharmony_cigetLast(): T 340e41f4b71Sopenharmony_ci 341e41f4b71Sopenharmony_ciObtains the last element of this container. 342e41f4b71Sopenharmony_ci 343e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 344e41f4b71Sopenharmony_ci 345e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang 346e41f4b71Sopenharmony_ci 347e41f4b71Sopenharmony_ci**Return value** 348e41f4b71Sopenharmony_ci 349e41f4b71Sopenharmony_ci| Type| Description| 350e41f4b71Sopenharmony_ci| -------- | -------- | 351e41f4b71Sopenharmony_ci| T | Last element of the T type obtained.| 352e41f4b71Sopenharmony_ci 353e41f4b71Sopenharmony_ci**Error codes** 354e41f4b71Sopenharmony_ci 355e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md). 356e41f4b71Sopenharmony_ci 357e41f4b71Sopenharmony_ci| ID| Error Message| 358e41f4b71Sopenharmony_ci| -------- | -------- | 359e41f4b71Sopenharmony_ci| 10200011 | The getLast method cannot be bound. | 360e41f4b71Sopenharmony_ci 361e41f4b71Sopenharmony_ci**Example** 362e41f4b71Sopenharmony_ci 363e41f4b71Sopenharmony_ci```ts 364e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque(); 365e41f4b71Sopenharmony_cideque.insertFront(2); 366e41f4b71Sopenharmony_cideque.insertFront(4); 367e41f4b71Sopenharmony_cideque.insertFront(5); 368e41f4b71Sopenharmony_cideque.insertFront(4); 369e41f4b71Sopenharmony_cilet result = deque.getLast(); 370e41f4b71Sopenharmony_ci``` 371e41f4b71Sopenharmony_ci 372e41f4b71Sopenharmony_ci### [Symbol.iterator] 373e41f4b71Sopenharmony_ci 374e41f4b71Sopenharmony_ci[Symbol.iterator]\(): IterableIterator<T> 375e41f4b71Sopenharmony_ci 376e41f4b71Sopenharmony_ciObtains an iterator, each item of which is a JavaScript object. 377e41f4b71Sopenharmony_ci 378e41f4b71Sopenharmony_ci> **NOTE** 379e41f4b71Sopenharmony_ci> 380e41f4b71Sopenharmony_ci> This API cannot be used in .ets files. 381e41f4b71Sopenharmony_ci 382e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 383e41f4b71Sopenharmony_ci 384e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Utils.Lang 385e41f4b71Sopenharmony_ci 386e41f4b71Sopenharmony_ci**Return value** 387e41f4b71Sopenharmony_ci 388e41f4b71Sopenharmony_ci| Type| Description| 389e41f4b71Sopenharmony_ci| -------- | -------- | 390e41f4b71Sopenharmony_ci| IterableIterator<T> | Iterator obtained.| 391e41f4b71Sopenharmony_ci 392e41f4b71Sopenharmony_ci**Error codes** 393e41f4b71Sopenharmony_ci 394e41f4b71Sopenharmony_ciFor details about the error codes, see [Utils Error Codes](errorcode-utils.md). 395e41f4b71Sopenharmony_ci 396e41f4b71Sopenharmony_ci| ID| Error Message| 397e41f4b71Sopenharmony_ci| -------- | -------- | 398e41f4b71Sopenharmony_ci| 10200011 | The Symbol.iterator method cannot be bound. | 399e41f4b71Sopenharmony_ci 400e41f4b71Sopenharmony_ci**Example** 401e41f4b71Sopenharmony_ci```ts 402e41f4b71Sopenharmony_cilet deque: Deque<number> = new Deque(); 403e41f4b71Sopenharmony_cideque.insertFront(2); 404e41f4b71Sopenharmony_cideque.insertFront(4); 405e41f4b71Sopenharmony_cideque.insertFront(5); 406e41f4b71Sopenharmony_cideque.insertFront(4); 407e41f4b71Sopenharmony_ci 408e41f4b71Sopenharmony_ci// Method 1: 409e41f4b71Sopenharmony_cilet nums: Array<number> = Array.from(deque) 410e41f4b71Sopenharmony_cifor (let item of nums) { 411e41f4b71Sopenharmony_ci console.log("value:" + item); 412e41f4b71Sopenharmony_ci} 413e41f4b71Sopenharmony_ci 414e41f4b71Sopenharmony_ci// Method 2: 415e41f4b71Sopenharmony_cilet iter = deque[Symbol.iterator](); 416e41f4b71Sopenharmony_cilet temp:IteratorResult<number> = iter.next(); 417e41f4b71Sopenharmony_ciwhile(!temp.done) { 418e41f4b71Sopenharmony_ci console.log("value:" + temp.value); 419e41f4b71Sopenharmony_ci temp = iter.next(); 420e41f4b71Sopenharmony_ci} 421e41f4b71Sopenharmony_ci``` 422