• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.util.HashSet (非线性容器HashSet)
2
3HashSet基于[HashMap](js-apis-hashmap.md)实现。在HashSet中,只对value对象进行处理。
4
5HashSet和[TreeSet](js-apis-treeset.md)相比,HashSet中的数据无序存放,即存放元素的顺序和取出的顺序不一致,而TreeSet是有序存放。它们集合中的元素都不允许重复,但HashSet允许放入null值,TreeSet不允许。
6
7**推荐使用场景:** 可以利用HashSet不重复的特性,当需要不重复的集合或需要去重某个集合的时候使用。
8
9文档中存在泛型的使用,涉及以下泛型标记符:<br>
10- T:Type,类
11
12> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
13>
14> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
15
16
17## 导入模块
18
19```ts
20import HashSet from '@ohos.util.HashSet';
21```
22
23## HashSet
24
25### 属性
26
27**系统能力:** SystemCapability.Utils.Lang
28
29| 名称 | 类型 | 可读 | 可写 | 说明 |
30| -------- | -------- | -------- | -------- | -------- |
31| length | number | 是 | 否 | HashSet的元素个数。 |
32
33**示例:**
34
35```ts
36let hashSet = new HashSet();
37hashSet.add(1);
38hashSet.add(2);
39hashSet.add(3);
40hashSet.add(4);
41hashSet.add(5);
42let res = hashSet.length;
43```
44
45### constructor
46
47constructor()
48
49HashSet的构造函数。
50
51**系统能力:** SystemCapability.Utils.Lang
52
53**错误码:**
54
55以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
56
57| 错误码ID | 错误信息 |
58| -------- | -------- |
59| 10200012 | The HashSet's constructor cannot be directly invoked. |
60
61**示例:**
62
63```ts
64let hashSet = new HashSet();
65```
66
67
68### isEmpty
69
70isEmpty(): boolean
71
72判断该HashSet是否为空。
73
74**系统能力:** SystemCapability.Utils.Lang
75
76**返回值:**
77
78| 类型 | 说明 |
79| -------- | -------- |
80| boolean | 为空返回true,不为空返回false。 |
81
82**错误码:**
83
84以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
85
86| 错误码ID | 错误信息 |
87| -------- | -------- |
88| 10200011 | The isEmpty method cannot be bound. |
89
90**示例:**
91
92```ts
93const hashSet = new HashSet();
94let result = hashSet.isEmpty();
95```
96
97
98### has
99
100has(value: T): boolean
101
102判断此HashSet中是否含有该指定元素。
103
104**系统能力:** SystemCapability.Utils.Lang
105
106**参数:**
107
108| 参数名 | 类型 | 必填 | 说明 |
109| -------- | -------- | -------- | -------- |
110| value | T | 是 | 指定元素。 |
111
112**返回值:**
113
114| 类型 | 说明 |
115| -------- | -------- |
116| boolean | 包含指定元素返回true,否则返回false。 |
117
118**错误码:**
119
120以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
121
122| 错误码ID | 错误信息 |
123| -------- | -------- |
124| 10200011 | The has method cannot be bound. |
125
126**示例:**
127
128```ts
129let hashSet = new HashSet();
130hashSet.add("squirrel");
131let result = hashSet.has("squirrel");
132```
133
134
135### add
136
137add(value: T): boolean
138
139向HashSet中添加数据。
140
141**系统能力:** SystemCapability.Utils.Lang
142
143**参数:**
144
145| 参数名 | 类型 | 必填 | 说明 |
146| -------- | -------- | -------- | -------- |
147| value | T | 是 | 添加成员数据。 |
148
149**返回值:**
150
151| 类型 | 说明 |
152| -------- | -------- |
153| boolean | 成功增加元素返回true,否则返回false。 |
154
155**错误码:**
156
157以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
158
159| 错误码ID | 错误信息 |
160| -------- | -------- |
161| 10200011 | The add method cannot be bound. |
162
163**示例:**
164
165```ts
166let hashSet = new HashSet();
167let result = hashSet.add("squirrel");
168```
169
170
171### remove
172
173remove(value: T): boolean
174
175删除指定的元素。
176
177**系统能力:** SystemCapability.Utils.Lang
178
179**参数:**
180
181| 参数名 | 类型 | 必填 | 说明 |
182| -------- | -------- | -------- | -------- |
183| value | T | 是 | 指定删除的元素。 |
184
185**返回值:**
186
187| 类型 | 说明 |
188| -------- | -------- |
189| boolean | 成功删除指定元素返回true,否则返回false。 |
190
191**错误码:**
192
193以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
194
195| 错误码ID | 错误信息 |
196| -------- | -------- |
197| 10200011 | The remove method cannot be bound. |
198
199**示例:**
200
201```ts
202let hashSet = new HashSet();
203hashSet.add("squirrel");
204hashSet.add("sparrow");
205let result = hashSet.remove("sparrow");
206```
207
208
209### clear
210
211clear(): void
212
213清除HashSet中的所有元素,并把length置为0。
214
215**系统能力:** SystemCapability.Utils.Lang
216
217**错误码:**
218
219以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
220
221| 错误码ID | 错误信息 |
222| -------- | -------- |
223| 10200011 | The clear method cannot be bound. |
224
225**示例:**
226
227```ts
228let hashSet = new HashSet();
229hashSet.add("squirrel");
230hashSet.add("sparrow");
231hashSet.clear();
232```
233
234
235### values
236
237values(): IterableIterator&lt;T&gt;
238
239返回包含此映射中包含的键值的新迭代器对象。
240
241**系统能力:** SystemCapability.Utils.Lang
242
243**返回值:**
244
245| 类型 | 说明 |
246| -------- | -------- |
247| IterableIterator&lt;T&gt; | 返回一个迭代器。 |
248
249**错误码:**
250
251以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
252
253| 错误码ID | 错误信息 |
254| -------- | -------- |
255| 10200011 | The values method cannot be bound. |
256
257**示例:**
258
259```ts
260let hashSet = new HashSet();
261hashSet.add("squirrel");
262hashSet.add("sparrow");
263let iter = hashSet.values();
264let temp = iter.next().value;
265while(temp != undefined) {
266  console.log("value:" + temp);
267  temp = iter.next().value;
268}
269```
270
271
272### forEach
273
274forEach(callbackFn: (value?: T, key?: T, set?: HashSet&lt;T&gt;) => void, thisArg?: Object): void
275
276通过回调函数来遍历实例对象上的元素以及元素对应的下标。
277
278**系统能力:** SystemCapability.Utils.Lang
279
280**参数:**
281
282| 参数名 | 类型 | 必填 | 说明 |
283| -------- | -------- | -------- | -------- |
284| callbackFn | function | 是 | 回调函数。 |
285| thisArg | Object | 否 | callbackfn被调用时用作this值。 |
286
287callbackfn的参数说明:
288| 参数名 | 类型 | 必填 | 说明 |
289| -------- | -------- | -------- | -------- |
290| value | T | 否 | 当前遍历到的元素键值对的值。 |
291| key | T | 否 | 当前遍历到的元素键值对的值(和value相同)。 |
292| set | HashSet&lt;T&gt; | 否 | 当前调用forEach方法的实例对象。 |
293
294**错误码:**
295
296以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
297
298| 错误码ID | 错误信息 |
299| -------- | -------- |
300| 10200011 | The forEach method cannot be bound. |
301
302**示例:**
303
304```ts
305let hashSet = new HashSet();
306hashSet.add("sparrow");
307hashSet.add("squirrel");
308hashSet.forEach((value, key) => {
309    console.log("value:" + value, "key:" + key);
310});
311```
312
313
314### entries
315entries(): IterableIterator<[T, T]>
316
317返回包含此映射中包含的键值对的新迭代器对象。
318
319**系统能力:** SystemCapability.Utils.Lang
320
321**返回值:**
322
323| 类型 | 说明 |
324| -------- | -------- |
325| IterableIterator<[T, T]> | 返回一个迭代器。 |
326
327**错误码:**
328
329以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
330
331| 错误码ID | 错误信息 |
332| -------- | -------- |
333| 10200011 | The entries method cannot be bound. |
334
335**示例:**
336
337```ts
338let hashSet = new HashSet();
339hashSet.add("squirrel");
340hashSet.add("sparrow");
341let iter = hashSet.entries();
342let temp = iter.next().value;
343while(temp != undefined) {
344  console.log("key:" + temp[0]);
345  console.log("value:" + temp[1]);
346  temp = iter.next().value;
347}
348```
349
350
351### [Symbol.iterator]
352
353[Symbol.iterator]\(): IterableIterator&lt;T&gt;
354
355返回一个迭代器,迭代器的每一项都是一个 JavaScript 对象,并返回该对象。
356
357**系统能力:** SystemCapability.Utils.Lang
358
359**返回值:**
360
361| 类型 | 说明 |
362| -------- | -------- |
363| IterableIterator&lt;T&gt; | 返回一个迭代器 |
364
365**错误码:**
366
367以下错误码的详细介绍请参见[语言基础类库错误码](../errorcodes/errorcode-utils.md)。
368
369| 错误码ID | 错误信息 |
370| -------- | -------- |
371| 10200011 | The Symbol.iterator method cannot be bound. |
372
373**示例:**
374
375```ts
376let hashSet = new HashSet();
377hashSet.add("squirrel");
378hashSet.add("sparrow");
379
380// 使用方法一:
381for (let item of hashSet) {
382  console.log("value: " + item);
383}
384
385// 使用方法二:
386let iter = hashSet[Symbol.iterator]();
387let temp = iter.next().value;
388while(temp != undefined) {
389  console.log("value: " + temp);
390  temp = iter.next().value;
391}
392```