js-apis-treemap.md 16.2 KB
Newer Older
1
# @ohos.util.TreeMap (非线性容器TreeMap) 
L
linhaoran 已提交
2

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

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

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

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

11 12
文档中存在泛型的使用,涉及以下泛型标记符:

13 14
- K: Key, 键

L
lengchangjing 已提交
15 16
- V: Value, 值

17 18 19 20
> **说明:**
>
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

L
linhaoran 已提交
21 22
## 导入模块

23
```ts
24
import TreeMap from '@ohos.util.TreeMap';  
L
linhaoran 已提交
25 26 27 28 29 30
```

## TreeMap

### 属性

Z
zengyawen 已提交
31 32
**系统能力:** SystemCapability.Utils.Lang

L
liu-ganlin 已提交
33
| 名称 | 类型 | 可读 | 可写 | 说明 |
L
linhaoran 已提交
34
| -------- | -------- | -------- | -------- | -------- |
35
| length | number | 是 | 否 | TreeMap的元素个数。 |
L
linhaoran 已提交
36 37 38 39


### constructor

Z
zengyawen 已提交
40
constructor(comparator?:(firstValue: K, secondValue: K) => boolean)
L
linhaoran 已提交
41 42 43

TreeMap的构造函数。

Z
zengyawen 已提交
44 45
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
46 47 48 49 50 51
**参数:**

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

L
liu-ganlin 已提交
52 53
**错误码:**

B
bi-hu 已提交
54
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
55

L
liu-ganlin 已提交
56
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
57 58 59
| -------- | -------- |
| 10200012 | The TreeMap's constructor cannot be directly invoked. |

Z
zengyawen 已提交
60
**示例:**
L
linhaoran 已提交
61

62
```ts
Z
zengyawen 已提交
63 64
let treeMap = new TreeMap();
```
L
linhaoran 已提交
65 66 67 68


### isEmpty

69
isEmpty(): boolean
L
linhaoran 已提交
70 71 72

判断该容器是否为空。

Z
zengyawen 已提交
73 74
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
75 76 77 78 79
**返回值:**

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

L
liu-ganlin 已提交
81 82
**错误码:**

B
bi-hu 已提交
83
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
84

L
liu-ganlin 已提交
85
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
86 87 88
| -------- | -------- |
| 10200011 | The isEmpty method cannot be bound. |

Z
zengyawen 已提交
89 90
**示例:**

91
```ts
Z
zengyawen 已提交
92
const treeMap = new TreeMap();
93
let result = treeMap.isEmpty();
Z
zengyawen 已提交
94
```
L
linhaoran 已提交
95 96 97 98


### hasKey

99
hasKey(key: K): boolean
L
linhaoran 已提交
100 101 102

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

Z
zengyawen 已提交
103 104
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
105
**参数:**
L
linhaoran 已提交
106

Z
zengyawen 已提交
107 108
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
109
| key | K | 是 | 指定key |
L
linhaoran 已提交
110

Z
zengyawen 已提交
111 112 113 114
**返回值:**

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

L
liu-ganlin 已提交
117 118
**错误码:**

B
bi-hu 已提交
119
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
120

L
liu-ganlin 已提交
121
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
122 123 124
| -------- | -------- |
| 10200011 | The hasKey method cannot be bound. |

Z
zengyawen 已提交
125 126
**示例:**

127
```ts
Z
zengyawen 已提交
128
let treeMap = new TreeMap();
L
lengchangjing 已提交
129 130 131
let result = treeMap.hasKey("squirrel");
treeMap.set("squirrel", 123);
let result1 = treeMap.hasKey("squirrel");
Z
zengyawen 已提交
132
```
L
linhaoran 已提交
133 134 135 136


### hasValue

Z
zengyawen 已提交
137
hasValue(value: V): boolean
L
linhaoran 已提交
138

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

Z
zengyawen 已提交
141 142
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
143 144 145 146
**参数:**

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

Z
zengyawen 已提交
149
**返回值:**
L
linhaoran 已提交
150

Z
zengyawen 已提交
151 152 153 154
| 类型 | 说明 |
| -------- | -------- |
| boolean | 包含指定元素返回true,否则返回false。 |

L
liu-ganlin 已提交
155 156
**错误码:**

B
bi-hu 已提交
157
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
158

L
liu-ganlin 已提交
159
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
160 161 162
| -------- | -------- |
| 10200011 | The hasValue method cannot be bound. |

Z
zengyawen 已提交
163 164
**示例:**

165
```ts
Z
zengyawen 已提交
166
let treeMap = new TreeMap();
167
let result = treeMap.hasValue(123);
L
lengchangjing 已提交
168
treeMap.set("squirrel", 123);
169
let result1 = treeMap.hasValue(123);
Z
zengyawen 已提交
170
```
L
linhaoran 已提交
171 172 173 174


### get

Z
zengyawen 已提交
175
get(key: K): V
L
linhaoran 已提交
176 177 178

获取指定key所对应的value。

Z
zengyawen 已提交
179 180
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
181 182 183 184
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
185
| key | K | 是 | 指定key。 |
Z
zengyawen 已提交
186 187

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

Z
zengyawen 已提交
189 190 191
| 类型 | 说明 |
| -------- | -------- |
| V | 返回key映射的value值。 |
L
linhaoran 已提交
192

L
liu-ganlin 已提交
193 194
**错误码:**

B
bi-hu 已提交
195
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
196

L
liu-ganlin 已提交
197
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
198 199 200
| -------- | -------- |
| 10200011 | The get method cannot be bound. |

Z
zengyawen 已提交
201 202
**示例:**

203
```ts
Z
zengyawen 已提交
204
let treeMap = new TreeMap();
L
lengchangjing 已提交
205 206 207
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
let result = treeMap.get("sparrow");
Z
zengyawen 已提交
208
```
L
linhaoran 已提交
209 210 211 212


### getFirstKey

213
getFirstKey(): K
L
linhaoran 已提交
214

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

Z
zengyawen 已提交
217 218
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
219 220 221 222
**返回值:**

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

L
liu-ganlin 已提交
225 226
**错误码:**

B
bi-hu 已提交
227
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
228

L
liu-ganlin 已提交
229
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
230 231 232
| -------- | -------- |
| 10200011 | The getFirstKey method cannot be bound. |

Z
zengyawen 已提交
233
**示例:**
L
linhaoran 已提交
234

235
```ts
Z
zengyawen 已提交
236
let treeMap = new TreeMap();
L
lengchangjing 已提交
237 238
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
239 240
let result = treeMap.getFirstKey();
```
L
linhaoran 已提交
241 242 243 244


### getLastKey

245
getLastKey(): K
L
linhaoran 已提交
246

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

Z
zengyawen 已提交
249 250
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
251
**返回值:**
L
linhaoran 已提交
252

Z
zengyawen 已提交
253 254
| 类型 | 说明 |
| -------- | -------- |
255
| K | 返回排序最后的key |
Z
zengyawen 已提交
256

L
liu-ganlin 已提交
257 258
**错误码:**

B
bi-hu 已提交
259
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
260

L
liu-ganlin 已提交
261
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
262 263 264
| -------- | -------- |
| 10200011 | The getLastKey method cannot be bound. |

Z
zengyawen 已提交
265 266
**示例:**

267
```ts
Z
zengyawen 已提交
268
let treeMap = new TreeMap();
L
lengchangjing 已提交
269 270
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
271 272
let result = treeMap.getLastKey();
```
L
linhaoran 已提交
273 274 275 276


### setAll

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

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

Z
zengyawen 已提交
281 282
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
283 284 285 286
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
B
bi-hu 已提交
287
| map | TreeMap<K, V> | 是 | 该map会添加到其调用setAll接口的map对象中。 |
Z
zengyawen 已提交
288

L
liu-ganlin 已提交
289 290
**错误码:**

B
bi-hu 已提交
291
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
292

L
liu-ganlin 已提交
293
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
294 295 296
| -------- | -------- |
| 10200011 | The setAll method cannot be bound. |

Z
zengyawen 已提交
297
**示例:**
L
linhaoran 已提交
298

299
```ts
Z
zengyawen 已提交
300
let treeMap = new TreeMap();
L
lengchangjing 已提交
301 302
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
303
let map = new TreeMap();
B
bi-hu 已提交
304 305 306 307 308
map.set("demo", 12);
map.setAll(treeMap); // 将treeMap中的所有元素添加到map中
map.forEach((value, key) => {
    console.log("test" + value, key); // 打印结果 12 demo、356 sparrow、123 squirrel
})
Z
zengyawen 已提交
309
```
L
linhaoran 已提交
310 311 312


### set
313

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

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

Z
zengyawen 已提交
318 319
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
320 321 322 323 324 325
**参数:**

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

Z
zengyawen 已提交
327
**返回值:**
L
linhaoran 已提交
328

Z
zengyawen 已提交
329 330
| 类型 | 说明 |
| -------- | -------- |
331
| Object | 返回添加后的treeMap |
Z
zengyawen 已提交
332

L
liu-ganlin 已提交
333 334
**错误码:**

B
bi-hu 已提交
335
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
336

L
liu-ganlin 已提交
337
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
338 339 340
| -------- | -------- |
| 10200011 | The set method cannot be bound. |

Z
zengyawen 已提交
341 342
**示例:**

343
```ts
Z
zengyawen 已提交
344
let treeMap = new TreeMap();
L
lengchangjing 已提交
345
treeMap.set("squirrel", 123);
Z
zengyawen 已提交
346
```
L
linhaoran 已提交
347 348 349 350


### remove

351
remove(key: K): V
L
linhaoran 已提交
352

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

Z
zengyawen 已提交
355 356
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
357 358 359 360
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
361
| key | K | 是 | 指定key。 |
Z
zengyawen 已提交
362 363

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

Z
zengyawen 已提交
365 366 367
| 类型 | 说明 |
| -------- | -------- |
| V | 返回删除元素的值。 |
L
linhaoran 已提交
368

L
liu-ganlin 已提交
369 370
**错误码:**

B
bi-hu 已提交
371
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
372

L
liu-ganlin 已提交
373
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
374 375 376
| -------- | -------- |
| 10200011 | The remove method cannot be bound. |

Z
zengyawen 已提交
377 378
**示例:**

379
```ts
Z
zengyawen 已提交
380
let treeMap = new TreeMap();
L
lengchangjing 已提交
381 382 383
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
treeMap.remove("sparrow");
Z
zengyawen 已提交
384
```
L
linhaoran 已提交
385 386


387
### getLowerKey
L
linhaoran 已提交
388

389
getLowerKey(key: K): K
L
linhaoran 已提交
390 391 392

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

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

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

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

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

Z
zengyawen 已提交
403 404 405
| 类型 | 说明 |
| -------- | -------- |
| K | 返回排序中key前一位的数据。 |
L
linhaoran 已提交
406

L
liu-ganlin 已提交
407 408
**错误码:**

B
bi-hu 已提交
409
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
410

L
liu-ganlin 已提交
411
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
412 413 414
| -------- | -------- |
| 10200011 | The getLowerKey method cannot be bound. |

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

417
```ts
Z
zengyawen 已提交
418
let treeMap = new TreeMap();
L
lengchangjing 已提交
419 420 421 422
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
treeMap.set("gander", 356);
let result = treeMap.getLowerKey("sparrow");
Z
zengyawen 已提交
423
```
L
linhaoran 已提交
424 425


426
### getHigherKey
L
linhaoran 已提交
427

428
getHigherKey(key: K): K
L
linhaoran 已提交
429 430 431

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

Z
zengyawen 已提交
432 433
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
434
**参数:**
L
linhaoran 已提交
435

Z
zengyawen 已提交
436 437 438
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| key | K | 是 | 对比的key值。 |
L
linhaoran 已提交
439

Z
zengyawen 已提交
440 441 442 443 444 445
**返回值:**

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

L
liu-ganlin 已提交
446 447
**错误码:**

B
bi-hu 已提交
448
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
449

L
liu-ganlin 已提交
450
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
451 452 453
| -------- | -------- |
| 10200011 | The getHigherKey method cannot be bound. |

Z
zengyawen 已提交
454 455
**示例:**

456
```ts
Z
zengyawen 已提交
457
let treeMap = new TreeMap();
L
lengchangjing 已提交
458 459 460 461
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
treeMap.set("gander", 356);
let result = treeMap.getHigherKey("sparrow");
Z
zengyawen 已提交
462
```
L
linhaoran 已提交
463 464

### replace
465

466
replace(key: K, newValue: V): boolean
L
linhaoran 已提交
467

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

Z
zengyawen 已提交
470 471
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
472
**参数:**
L
linhaoran 已提交
473

Z
zengyawen 已提交
474 475
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
476 477
| key | K | 是 | 指定key。 |
| newValue | V | 是 | 替换的元素。 |
L
linhaoran 已提交
478

Z
zengyawen 已提交
479 480 481 482
**返回值:**

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

L
liu-ganlin 已提交
485 486
**错误码:**

B
bi-hu 已提交
487
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
488

L
liu-ganlin 已提交
489
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
490 491 492
| -------- | -------- |
| 10200011 | The replace method cannot be bound. |

Z
zengyawen 已提交
493 494
**示例:**

495
```ts
Z
zengyawen 已提交
496
let treeMap = new TreeMap();
L
lengchangjing 已提交
497 498
treeMap.set("sparrow", 123);
let result = treeMap.replace("sparrow", 357);
Z
zengyawen 已提交
499
```
L
linhaoran 已提交
500 501 502 503


### clear

Z
zengyawen 已提交
504
clear(): void
L
linhaoran 已提交
505

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

Z
zengyawen 已提交
508 509
**系统能力:** SystemCapability.Utils.Lang

L
liu-ganlin 已提交
510 511
**错误码:**

B
bi-hu 已提交
512
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
513

L
liu-ganlin 已提交
514
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
515 516 517
| -------- | -------- |
| 10200011 | The clear method cannot be bound. |

Z
zengyawen 已提交
518 519
**示例:**

520
```ts
Z
zengyawen 已提交
521
let treeMap = new TreeMap();
L
lengchangjing 已提交
522 523
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
524 525
treeMap.clear();
```
L
linhaoran 已提交
526 527 528 529


### keys

Z
zengyawen 已提交
530
keys(): IterableIterator&lt;K&gt;
L
linhaoran 已提交
531 532 533

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

Z
zengyawen 已提交
534 535
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
536 537 538 539 540 541
**返回值:**

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

L
liu-ganlin 已提交
542 543
**错误码:**

B
bi-hu 已提交
544
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
545

L
liu-ganlin 已提交
546
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
547 548 549
| -------- | -------- |
| 10200011 | The keys method cannot be bound. |

Z
zengyawen 已提交
550 551
**示例:**

552
```ts
Z
zengyawen 已提交
553
let treeMap = new TreeMap();
L
lengchangjing 已提交
554 555
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
556 557 558
let iter = treeMap.keys();
let temp = iter.next().value;
while(temp != undefined) {
559
  console.log("value:" + temp);
Z
zengyawen 已提交
560
  temp = iter.next().value;
L
liu-ganlin 已提交
561
}
Z
zengyawen 已提交
562
```
L
linhaoran 已提交
563 564 565 566


### values

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

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

Z
zengyawen 已提交
571 572
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
573 574 575 576 577 578
**返回值:**

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

L
liu-ganlin 已提交
579 580
**错误码:**

B
bi-hu 已提交
581
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
582

L
liu-ganlin 已提交
583
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
584 585 586
| -------- | -------- |
| 10200011 | The values method cannot be bound. |

Z
zengyawen 已提交
587 588
**示例:**

589
```ts
Z
zengyawen 已提交
590
let treeMap = new TreeMap();
L
lengchangjing 已提交
591 592
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
593 594 595
let iter = treeMap.values();
let temp = iter.next().value;
while(temp != undefined) {
596
  console.log("value:" + temp);
Z
zengyawen 已提交
597 598 599
  temp = iter.next().value;
}
```
L
linhaoran 已提交
600 601 602 603


### forEach

604
forEach(callbackFn: (value?: V, key?: K, map?: TreeMap<K, V>) => void, thisArg?: Object): void
L
linhaoran 已提交
605 606 607

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

Z
zengyawen 已提交
608 609
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
610 611 612 613
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
614
| callbackFn | function | 是 | 回调函数。 |
615
| thisArg | Object | 否 | callbackFn被调用时用作this值。 |
Z
zengyawen 已提交
616

617
callbackFn的参数说明:
Z
zengyawen 已提交
618 619
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
620 621
| value | V | 否 | 当前遍历到的元素键值对的值。 |
| key | K | 否 | 当前遍历到的元素键值对的键。 |
622
| map | TreeMap<K, V> | 否 | 当前调用forEach方法的实例对象。 |
Z
zengyawen 已提交
623

L
liu-ganlin 已提交
624 625
**错误码:**

B
bi-hu 已提交
626
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
627

L
liu-ganlin 已提交
628
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
629 630 631
| -------- | -------- |
| 10200011 | The forEach method cannot be bound. |

Z
zengyawen 已提交
632 633
**示例:**

634
```ts
Z
zengyawen 已提交
635
let treeMap = new TreeMap();
L
lengchangjing 已提交
636 637
treeMap.set("sparrow", 123);
treeMap.set("gull", 357);
Z
zengyawen 已提交
638
treeMap.forEach((value, key) => {
639
  console.log("value:" + value, key);
Z
zengyawen 已提交
640 641
});
```
L
linhaoran 已提交
642 643 644 645


### entries

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

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

Z
zengyawen 已提交
650 651
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
652 653 654 655 656 657
**返回值:**

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

L
liu-ganlin 已提交
658 659
**错误码:**

B
bi-hu 已提交
660
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
661

L
liu-ganlin 已提交
662
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
663 664 665
| -------- | -------- |
| 10200011 | The entries method cannot be bound. |

Z
zengyawen 已提交
666 667
**示例:**

668
```ts
Z
zengyawen 已提交
669
let treeMap = new TreeMap();
L
lengchangjing 已提交
670 671
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
672 673 674
let iter = treeMap.entries();
let temp = iter.next().value;
while(temp != undefined) {
675 676
  console.log("key:" + temp[0]);
  console.log("value:" + temp[1]);
Z
zengyawen 已提交
677 678 679
  temp = iter.next().value;
}
```
L
linhaoran 已提交
680 681 682 683


### [Symbol.iterator]

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

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

Z
zengyawen 已提交
688 689
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
690 691 692 693 694
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| IterableIterator<[K, V]> | 返回一个迭代器。 |

L
liu-ganlin 已提交
695 696
**错误码:**

B
bi-hu 已提交
697
以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)
L
liu-ganlin 已提交
698

L
liu-ganlin 已提交
699
| 错误码ID | 错误信息 |
L
liu-ganlin 已提交
700 701 702
| -------- | -------- |
| 10200011 | The Symbol.iterator method cannot be bound. |

Z
zengyawen 已提交
703 704
**示例:**

705
```ts
Z
zengyawen 已提交
706
let treeMap = new TreeMap();
L
lengchangjing 已提交
707 708
treeMap.set("squirrel", 123);
treeMap.set("sparrow", 356);
Z
zengyawen 已提交
709 710 711

// 使用方法一:
for (let item of treeMap) { 
712 713
  console.log("key:" + item[0]);
  console.log("value:" + item[1]);
Z
zengyawen 已提交
714 715 716 717 718 719
}

// 使用方法二:
let iter = treeMap[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {
720 721
  console.log("key:" + temp[0]);
  console.log("value:" + temp[1]);
Z
zengyawen 已提交
722 723 724
  temp = iter.next().value;
}
```