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