js-apis-treemap.md 18.4 KB
Newer Older
L
linhaoran 已提交
1 2 3 4 5
# 非线性容器TreeMap  

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

6 7 8 9 10 11 12
TreeMap可用于存储具有关联关系的key-value键值对集合,存储元素中key值唯一,每个key对应一个value。

TreeMap底层使用红黑树实现,可以利用二叉树特性快速查找键值对。key值有序存储,可以实现快速的插入和删除。

TreeMap和[HashMap](js-apis-treemap.md)相比,HashMap依据键的hashCode存取数据,访问速度较快。而TreeMap是有序存取,效率较低。

**推荐使用场景:** 一般需要存储有序键值对的场景,可以使用TreeMap。
L
linhaoran 已提交
13

L
lengchangjing 已提交
14 15 16 17
文档中存在泛型的使用,涉及以下泛型标记符:<br>
- K: Key, 键<br>
- V: Value, 值

L
linhaoran 已提交
18 19
## 导入模块

20
```ts
21
import TreeMap from '@ohos.util.TreeMap';  
L
linhaoran 已提交
22 23 24 25 26 27
```

## TreeMap

### 属性

Z
zengyawen 已提交
28 29
**系统能力:** SystemCapability.Utils.Lang

L
linhaoran 已提交
30 31
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
32
| length | number | 是 | 否 | TreeMap的元素个数。 |
L
linhaoran 已提交
33 34 35 36


### constructor

Z
zengyawen 已提交
37
constructor(comparator?:(firstValue: K, secondValue: K) => boolean)
L
linhaoran 已提交
38 39 40

TreeMap的构造函数。

Z
zengyawen 已提交
41 42
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
43 44 45 46 47 48
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| comparator | function | 否 | 用户自定义的比较函数。 |

L
liu-ganlin 已提交
49 50 51 52 53 54 55 56
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200012 | The TreeMap's constructor cannot be directly invoked. |

Z
zengyawen 已提交
57
**示例:**
L
linhaoran 已提交
58

59
```ts
Z
zengyawen 已提交
60
let treeMap = new TreeMap();
L
liu-ganlin 已提交
61 62 63 64 65
try {
  let treeMap2 = TreeMap();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
66
```
L
linhaoran 已提交
67 68 69 70


### isEmpty

71
isEmpty(): boolean
L
linhaoran 已提交
72 73 74

判断该容器是否为空。

Z
zengyawen 已提交
75 76
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
77 78 79 80 81
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| boolean | 为空返回true,否则返回false。 |
L
linhaoran 已提交
82

L
liu-ganlin 已提交
83 84 85 86 87 88 89 90
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The isEmpty method cannot be bound. |

Z
zengyawen 已提交
91 92
**示例:**

93
```ts
Z
zengyawen 已提交
94
const treeMap = new TreeMap();
95
let result = treeMap.isEmpty();
L
liu-ganlin 已提交
96 97 98 99 100
try {
  treeMap.isEmpty.bind({})();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
101
```
L
linhaoran 已提交
102 103 104 105


### hasKey

106
hasKey(key: K): boolean
L
linhaoran 已提交
107 108 109

判断此容器中是否含有该指定key。

Z
zengyawen 已提交
110 111
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
112
**参数:**
L
linhaoran 已提交
113

Z
zengyawen 已提交
114 115
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
116
| key | K | 是 | 指定key |
L
linhaoran 已提交
117

Z
zengyawen 已提交
118 119 120 121
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
122
| boolean | 包含指定key返回true,否则返回false。 |
Z
zengyawen 已提交
123

L
liu-ganlin 已提交
124 125 126 127 128 129 130 131
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The hasKey method cannot be bound. |

Z
zengyawen 已提交
132 133
**示例:**

134
```ts
Z
zengyawen 已提交
135
let treeMap = new TreeMap();
L
lengchangjing 已提交
136 137 138
let result = treeMap.hasKey("squirrel");
treeMap.set("squirrel", 123);
let result1 = treeMap.hasKey("squirrel");
L
liu-ganlin 已提交
139 140 141 142 143
try {
  treeMap.hasKey.bind({}, "squirrel")();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
144
```
L
linhaoran 已提交
145 146 147 148


### hasValue

Z
zengyawen 已提交
149
hasValue(value: V): boolean
L
linhaoran 已提交
150

W
wusongqing 已提交
151
判断此容器中是否含有该指定value。
L
linhaoran 已提交
152

Z
zengyawen 已提交
153 154
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
155 156 157 158
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
W
wusongqing 已提交
159
| value | V | 是 | 指定value。 |
L
linhaoran 已提交
160

Z
zengyawen 已提交
161
**返回值:**
L
linhaoran 已提交
162

Z
zengyawen 已提交
163 164 165 166
| 类型 | 说明 |
| -------- | -------- |
| boolean | 包含指定元素返回true,否则返回false。 |

L
liu-ganlin 已提交
167 168 169 170 171 172 173 174
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The hasValue method cannot be bound. |

Z
zengyawen 已提交
175 176
**示例:**

177
```ts
Z
zengyawen 已提交
178
let treeMap = new TreeMap();
179
let result = treeMap.hasValue(123);
L
lengchangjing 已提交
180
treeMap.set("squirrel", 123);
181
let result1 = treeMap.hasValue(123);
L
liu-ganlin 已提交
182 183 184 185 186
try {
  treeMap.hasValue.bind({}, 123)();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
187
```
L
linhaoran 已提交
188 189 190 191


### get

Z
zengyawen 已提交
192
get(key: K): V
L
linhaoran 已提交
193 194 195

获取指定key所对应的value。

Z
zengyawen 已提交
196 197
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
198 199 200 201
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
202
| key | K | 是 | 指定key。 |
Z
zengyawen 已提交
203 204

**返回值:**
L
linhaoran 已提交
205

Z
zengyawen 已提交
206 207 208
| 类型 | 说明 |
| -------- | -------- |
| V | 返回key映射的value值。 |
L
linhaoran 已提交
209

L
liu-ganlin 已提交
210 211 212 213 214 215 216 217
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The get method cannot be bound. |

Z
zengyawen 已提交
218 219
**示例:**

220
```ts
Z
zengyawen 已提交
221
let treeMap = new TreeMap();
L
lengchangjing 已提交
222 223 224
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
let result = treeMap.get("sparrow");
L
liu-ganlin 已提交
225 226 227 228 229
try {
  treeMap.get.bind({}, "sparrow")();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
230
```
L
linhaoran 已提交
231 232 233 234


### getFirstKey

235
getFirstKey(): K
L
linhaoran 已提交
236

237
获取容器中排序第一的key。
L
linhaoran 已提交
238

Z
zengyawen 已提交
239 240
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
241 242 243 244
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
245
| K | 返回排序第一的key。 |
Z
zengyawen 已提交
246

L
liu-ganlin 已提交
247 248 249 250 251 252 253 254
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The getFirstKey method cannot be bound. |

Z
zengyawen 已提交
255
**示例:**
L
linhaoran 已提交
256

257
```ts
Z
zengyawen 已提交
258
let treeMap = new TreeMap();
L
lengchangjing 已提交
259 260
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
261
let result = treeMap.getFirstKey();
L
liu-ganlin 已提交
262 263 264 265 266
try {
  treeMap.getFirstKey.bind({})();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
267
```
L
linhaoran 已提交
268 269 270 271


### getLastKey

272
getLastKey(): K
L
linhaoran 已提交
273

274
获取容器中排序最后的key。
L
linhaoran 已提交
275

Z
zengyawen 已提交
276 277
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
278
**返回值:**
L
linhaoran 已提交
279

Z
zengyawen 已提交
280 281
| 类型 | 说明 |
| -------- | -------- |
282
| K | 返回排序最后的key |
Z
zengyawen 已提交
283

L
liu-ganlin 已提交
284 285 286 287 288 289 290 291
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The getLastKey method cannot be bound. |

Z
zengyawen 已提交
292 293
**示例:**

294
```ts
Z
zengyawen 已提交
295
let treeMap = new TreeMap();
L
lengchangjing 已提交
296 297
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
298
let result = treeMap.getLastKey();
L
liu-ganlin 已提交
299 300 301 302 303
try {
  treeMap.getLastKey.bind({})();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
304
```
L
linhaoran 已提交
305 306 307 308


### setAll

Z
zengyawen 已提交
309
setAll(map: TreeMap<K, V>): void
L
linhaoran 已提交
310

311
将一个TreeMap中的所有元素组添加到另一个TreeMap中。
L
linhaoran 已提交
312

Z
zengyawen 已提交
313 314
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
315 316 317 318
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
319
| map | TreeMap<K, V> | 是 | 被添加元素的treeMap。 |
Z
zengyawen 已提交
320

L
liu-ganlin 已提交
321 322 323 324 325 326 327 328
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The setAll method cannot be bound. |

Z
zengyawen 已提交
329
**示例:**
L
linhaoran 已提交
330

331
```ts
Z
zengyawen 已提交
332
let treeMap = new TreeMap();
L
lengchangjing 已提交
333 334
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
335 336
let map = new TreeMap();
treeMap.setAll(map);
L
liu-ganlin 已提交
337 338 339 340 341
try {
  treeMap.setAll.bind({}, map)();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
342
```
L
linhaoran 已提交
343 344 345


### set
346

Z
zengyawen 已提交
347
set(key: K, value: V): Object
L
linhaoran 已提交
348

349
向容器中添加一组数据。
L
linhaoran 已提交
350

Z
zengyawen 已提交
351 352
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
353 354 355 356 357 358
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | K | 是 | 添加成员数据的键名。 |
| value | V | 是 | 添加成员数据的值。 |
L
linhaoran 已提交
359

Z
zengyawen 已提交
360
**返回值:**
L
linhaoran 已提交
361

Z
zengyawen 已提交
362 363
| 类型 | 说明 |
| -------- | -------- |
364
| Object | 返回添加后的treeMap |
Z
zengyawen 已提交
365

L
liu-ganlin 已提交
366 367 368 369 370 371 372 373
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The set method cannot be bound. |

Z
zengyawen 已提交
374 375
**示例:**

376
```ts
Z
zengyawen 已提交
377
let treeMap = new TreeMap();
L
lengchangjing 已提交
378
treeMap.set("squirrel", 123);
L
liu-ganlin 已提交
379 380 381 382 383
try {
  treeMap.set.bind({}, "squirrel", 123)();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
384
```
L
linhaoran 已提交
385 386 387 388


### remove

389
remove(key: K): V
L
linhaoran 已提交
390

391
删除指定key对应的元素。
L
linhaoran 已提交
392

Z
zengyawen 已提交
393 394
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
395 396 397 398
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
399
| key | K | 是 | 指定key。 |
Z
zengyawen 已提交
400 401

**返回值:**
L
linhaoran 已提交
402

Z
zengyawen 已提交
403 404 405
| 类型 | 说明 |
| -------- | -------- |
| V | 返回删除元素的值。 |
L
linhaoran 已提交
406

L
liu-ganlin 已提交
407 408 409 410 411 412 413 414
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The remove method cannot be bound. |

Z
zengyawen 已提交
415 416
**示例:**

417
```ts
Z
zengyawen 已提交
418
let treeMap = new TreeMap();
L
lengchangjing 已提交
419 420 421
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
treeMap.remove("sparrow");
L
liu-ganlin 已提交
422 423 424 425 426
try {
  treeMap.remove.bind({}, "sparrow")();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
427
```
L
linhaoran 已提交
428 429


430
### getLowerKey
L
linhaoran 已提交
431

432
getLowerKey(key: K): K
L
linhaoran 已提交
433 434 435

获取容器中比传入key排序靠前一位的key。

Z
zengyawen 已提交
436 437
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
438 439 440 441 442 443 444
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | K | 是 | 对比的key值。 |

**返回值:**
L
linhaoran 已提交
445

Z
zengyawen 已提交
446 447 448
| 类型 | 说明 |
| -------- | -------- |
| K | 返回排序中key前一位的数据。 |
L
linhaoran 已提交
449

L
liu-ganlin 已提交
450 451 452 453 454 455 456 457
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The getLowerKey method cannot be bound. |

Z
zengyawen 已提交
458 459
**示例:**

460
```ts
Z
zengyawen 已提交
461
let treeMap = new TreeMap();
L
lengchangjing 已提交
462 463 464 465
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
treeMap.set("gander", 356);
let result = treeMap.getLowerKey("sparrow");
L
liu-ganlin 已提交
466 467 468 469 470
try {
  treeMap.getLowerKey.bind({}, "sparrow")();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
471
```
L
linhaoran 已提交
472 473


474
### getHigherKey
L
linhaoran 已提交
475

476
getHigherKey(key: K): K
L
linhaoran 已提交
477 478 479

获取容器中比传入key排序靠后一位的key。

Z
zengyawen 已提交
480 481
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
482
**参数:**
L
linhaoran 已提交
483

Z
zengyawen 已提交
484 485 486
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | K | 是 | 对比的key值。 |
L
linhaoran 已提交
487

Z
zengyawen 已提交
488 489 490 491 492 493
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| K | 返回排序中key后一位的数据。 |

L
liu-ganlin 已提交
494 495 496 497 498 499 500 501
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The getHigherKey method cannot be bound. |

Z
zengyawen 已提交
502 503
**示例:**

504
```ts
Z
zengyawen 已提交
505
let treeMap = new TreeMap();
L
lengchangjing 已提交
506 507 508 509
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
treeMap.set("gander", 356);
let result = treeMap.getHigherKey("sparrow");
L
liu-ganlin 已提交
510 511 512 513 514
try {
  treeMap.getHigherKey.bind({}, "sparrow")();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
515
```
L
linhaoran 已提交
516 517

### replace
518

519
replace(key: K, newValue: V): boolean
L
linhaoran 已提交
520

521
对容器中一组数据进行更新(替换)。
L
linhaoran 已提交
522

Z
zengyawen 已提交
523 524
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
525
**参数:**
L
linhaoran 已提交
526

Z
zengyawen 已提交
527 528
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
529 530
| key | K | 是 | 指定key。 |
| newValue | V | 是 | 替换的元素。 |
L
linhaoran 已提交
531

Z
zengyawen 已提交
532 533 534 535
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
536
| boolean | 对指定key对应的元素替换成功返回true,否则返回false。 |
Z
zengyawen 已提交
537

L
liu-ganlin 已提交
538 539 540 541 542 543 544 545
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The replace method cannot be bound. |

Z
zengyawen 已提交
546 547
**示例:**

548
```ts
Z
zengyawen 已提交
549
let treeMap = new TreeMap();
L
lengchangjing 已提交
550 551
treeMap.set("sparrow", 123);
let result = treeMap.replace("sparrow", 357);
L
liu-ganlin 已提交
552 553 554 555 556
try {
  treeMap.replace.bind({}, "sparrow", 357)();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
557
```
L
linhaoran 已提交
558 559 560 561


### clear

Z
zengyawen 已提交
562
clear(): void
L
linhaoran 已提交
563

564
清除容器中的所有元素,并把length置为0。
L
linhaoran 已提交
565

Z
zengyawen 已提交
566 567
**系统能力:** SystemCapability.Utils.Lang

L
liu-ganlin 已提交
568 569 570 571 572 573 574 575
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The clear method cannot be bound. |

Z
zengyawen 已提交
576 577
**示例:**

578
```ts
Z
zengyawen 已提交
579
let treeMap = new TreeMap();
L
lengchangjing 已提交
580 581
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
582
treeMap.clear();
L
liu-ganlin 已提交
583 584 585 586 587
try {
  treeMap.clear.bind({})();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
588
```
L
linhaoran 已提交
589 590 591 592


### keys

Z
zengyawen 已提交
593
keys(): IterableIterator&lt;K&gt;
L
linhaoran 已提交
594 595 596

返回包含此映射中包含的键的新迭代器对象。

Z
zengyawen 已提交
597 598
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
599 600 601 602 603 604
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| IterableIterator&lt;K&gt; | 返回一个迭代器。 |

L
liu-ganlin 已提交
605 606 607 608 609 610 611 612
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The keys method cannot be bound. |

Z
zengyawen 已提交
613 614
**示例:**

615
```ts
Z
zengyawen 已提交
616
let treeMap = new TreeMap();
L
lengchangjing 已提交
617 618
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
619 620 621
let iter = treeMap.keys();
let temp = iter.next().value;
while(temp != undefined) {
622
  console.log("value:" + temp);
Z
zengyawen 已提交
623
  temp = iter.next().value;
L
liu-ganlin 已提交
624 625 626 627 628 629
}
try {
  treeMap.keys.bind({})();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
630
```
L
linhaoran 已提交
631 632 633 634


### values

Z
zengyawen 已提交
635
values(): IterableIterator&lt;V&gt;
L
linhaoran 已提交
636

W
wusongqing 已提交
637
返回包含此映射中包含的键值的新迭代器对象。
L
linhaoran 已提交
638

Z
zengyawen 已提交
639 640
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
641 642 643 644 645 646
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| IterableIterator&lt;V&gt; | 返回一个迭代器。 |

L
liu-ganlin 已提交
647 648 649 650 651 652 653 654
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The values method cannot be bound. |

Z
zengyawen 已提交
655 656
**示例:**

657
```ts
Z
zengyawen 已提交
658
let treeMap = new TreeMap();
L
lengchangjing 已提交
659 660
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
661 662 663
let iter = treeMap.values();
let temp = iter.next().value;
while(temp != undefined) {
664
  console.log("value:" + temp);
Z
zengyawen 已提交
665 666
  temp = iter.next().value;
}
L
liu-ganlin 已提交
667 668 669 670 671
try {
  treeMap.values.bind({})();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
672
```
L
linhaoran 已提交
673 674 675 676


### forEach

677
forEach(callbackfn: (value?: V, key?: K, map?: TreeMap<K, V>) => void, thisArg?: Object): void
L
linhaoran 已提交
678 679 680

通过回调函数来遍历实例对象上的元素以及元素对应的下标。

Z
zengyawen 已提交
681 682
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
683 684 685 686 687 688 689 690 691 692
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| callbackfn | function | 是 | 回调函数。 |
| thisArg | Object | 否 | callbackfn被调用时用作this值。 |

callbackfn的参数说明:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
693 694
| value | V | 否 | 当前遍历到的元素键值对的值。 |
| key | K | 否 | 当前遍历到的元素键值对的键。 |
695
| map | TreeMap<K, V> | 否 | 当前调用forEach方法的实例对象。 |
Z
zengyawen 已提交
696

L
liu-ganlin 已提交
697 698 699 700 701 702 703 704
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The forEach method cannot be bound. |

Z
zengyawen 已提交
705 706
**示例:**

707
```ts
Z
zengyawen 已提交
708
let treeMap = new TreeMap();
L
lengchangjing 已提交
709 710
treeMap.set("sparrow", 123);
treeMap.set("gull", 357);
Z
zengyawen 已提交
711
treeMap.forEach((value, key) => {
712
  console.log("value:" + value, key);
Z
zengyawen 已提交
713
});
L
liu-ganlin 已提交
714 715 716 717 718 719 720
try {
  treeMap.forEach.bind({}, (value, key) => {
    console.log("value:" + value, key);
  })();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
721
```
L
linhaoran 已提交
722 723 724 725


### entries

Z
zengyawen 已提交
726
entries(): IterableIterator<[K, V]>
L
linhaoran 已提交
727

728
返回包含此映射中包含的键值对的新迭代器对象。
L
linhaoran 已提交
729

Z
zengyawen 已提交
730 731
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
732 733 734 735 736 737
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| IterableIterator<[K, V]> | 返回一个迭代器。 |

L
liu-ganlin 已提交
738 739 740 741 742 743 744 745
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The entries method cannot be bound. |

Z
zengyawen 已提交
746 747
**示例:**

748
```ts
Z
zengyawen 已提交
749
let treeMap = new TreeMap();
L
lengchangjing 已提交
750 751
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
752 753 754
let iter = treeMap.entries();
let temp = iter.next().value;
while(temp != undefined) {
755 756
  console.log("key:" + temp[0]);
  console.log("value:" + temp[1]);
Z
zengyawen 已提交
757 758
  temp = iter.next().value;
}
L
liu-ganlin 已提交
759 760 761 762 763
try {
  treeMap.entries.bind({})();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
764
```
L
linhaoran 已提交
765 766 767 768


### [Symbol.iterator]

769
[Symbol.iterator]\(): IterableIterator&lt;[K, V]&gt;
L
linhaoran 已提交
770

Z
zengyawen 已提交
771 772
返回一个迭代器,迭代器的每一项都是一个 JavaScript 对象,并返回该对象。

Z
zengyawen 已提交
773 774
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
775 776 777 778 779
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| IterableIterator<[K, V]> | 返回一个迭代器。 |

L
liu-ganlin 已提交
780 781 782 783 784 785 786 787
**错误码:**

以下错误码的详细介绍请参见[containers错误码](../errorcodes/errorcode-containers.md)

| 错误码ID | 错误码信息 |
| -------- | -------- |
| 10200011 | The Symbol.iterator method cannot be bound. |

Z
zengyawen 已提交
788 789
**示例:**

790
```ts
Z
zengyawen 已提交
791
let treeMap = new TreeMap();
L
lengchangjing 已提交
792 793
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
794 795 796

// 使用方法一:
for (let item of treeMap) { 
797 798
  console.log("key:" + item[0]);
  console.log("value:" + item[1]);
Z
zengyawen 已提交
799 800 801 802 803 804
}

// 使用方法二:
let iter = treeMap[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {
805 806
  console.log("key:" + temp[0]);
  console.log("value:" + temp[1]);
Z
zengyawen 已提交
807 808
  temp = iter.next().value;
}
L
liu-ganlin 已提交
809 810 811 812 813
try {
  treeMap[Symbol.iterator].bind({})();
} catch(err) {
  console.log(`${err.code} - ${err.name} - ${err.message}`);
}
Z
zengyawen 已提交
814
```