非線性容器LightWeightSet

2024-01-23 18:14 更新
說明

本模塊首批接口從API version 8開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。

LightWeightSet可用于存儲一系列值的集合,存儲元素中value值唯一。

LightWeightSet依據(jù)泛型定義,采用輕量級結構,初始默認容量大小為8,每次擴容大小為原始容量的兩倍。

集合中value值的查找依賴于hash算法,通過一個數(shù)組存儲hash值,然后映射到其他數(shù)組中的value值。

LightWeightSet和HashSet都是用來存儲鍵值的集合,LightWeightSet的占用內(nèi)存更小。

推薦使用場景: 當需要存取某個集合或是對某個集合去重時,推薦使用占用內(nèi)存更小的LightWeightSet。

文檔中存在泛型的使用,涉及以下泛型標記符:

  • T: Type, 類

導入模塊

  1. import LightWeightSet from '@ohos.util.LightWeightSet';

LightWeightSet

屬性

系統(tǒng)能力: SystemCapability.Utils.Lang

名稱

類型

可讀

可寫

說明

length

number

LightWeightSet的元素個數(shù)。

constructor

constructor()

LightWeightSet的構造函數(shù)。

系統(tǒng)能力: SystemCapability.Utils.Lang

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼

錯誤碼ID

錯誤信息

10200012

The LightWeightSet's constructor cannot be directly invoked.

示例:

  1. let lightWeightSet = new LightWeightSet();

isEmpty

isEmpty(): boolean

判斷該容器是否為空。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

boolean

為空返回true,不為空返回false。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼。

錯誤碼ID

錯誤信息

10200011

The isEmpty method cannot be bound.

示例:

  1. const lightWeightSet = new LightWeightSet();
  2. let result = lightWeightSet.isEmpty();

add

add(obj: T): boolean

向此容器中添加數(shù)據(jù)。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

obj

T

添加的成員數(shù)據(jù)。

返回值:

類型

說明

boolean

成功添加元素返回true,否則返回false。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼

錯誤碼ID

錯誤信息

10200011

The add method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. let result = lightWeightSet.add("squirrel");

addAll

addAll(set: LightWeightSet<T>): boolean

將另一個容器中的所有元素組添加到當前容器中。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

set

LightWeightSet<T>

提供添加元素的lightWeightSet。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼。

錯誤碼ID

錯誤信息

10200011

The addAll method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. let set = new LightWeightSet();
  5. set.add("gull");
  6. let result = lightWeightSet.addAll(set);

hasAll

hasAll(set: LightWeightSet<T>): boolean

判斷此容器中是否含有該指定set中的所有元素。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

set

LightWeightSet<T>

比較對象。

返回值:

類型

說明

boolean

包含所有元素返回true,否則返回false。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼

錯誤碼ID

錯誤信息

10200011

The hasAll method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. let set = new LightWeightSet();
  5. set.add("sparrow");
  6. let result = lightWeightSet.hasAll(set);

has

has(key: T): boolean

判斷此容器中是否含有該指定key。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

key

T

指定key

返回值:

類型

說明

boolean

包含指定key返回true,否則返回false。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼

錯誤碼ID

錯誤信息

10200011

The has method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. let result = lightWeightSet.has(123);
  3. lightWeightSet.add(123);
  4. result = lightWeightSet.has(123);

equal

equal(obj: Object): boolean

判斷此容器中是否含有該指定obj同類型的對象。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

obj

Object

比較對象。

返回值:

類型

說明

boolean

構成類型相同返回true,否則返回false。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼。

錯誤碼ID

錯誤信息

10200011

The equal method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. let obj = ["squirrel", "sparrow"];
  5. let result = lightWeightSet.equal(obj);

increaseCapacityTo

increaseCapacityTo(minimumCapacity: number): void

將當前容器擴容至可以容納指定數(shù)量元素。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

minimumCapacity

number

需要容納數(shù)量。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼。

錯誤碼ID

錯誤信息

10200011

The increaseCapacityTo method cannot be bound.

10200001

The value of minimumCapacity is out of range.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.increaseCapacityTo(10);

getIndexOf

getIndexOf(key: T): number

獲取指定key所對應的下標。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

key

T

查找的指定key。

返回值:

類型

說明

number

在lightWeightSet中指定數(shù)據(jù)的下標。若lightWeightSet中沒有要查找的元素,則返回一個負值。表示目標哈希值應該插入的位置,插入位置是從1開始計數(shù)的,負號表示這是一個插入位置而不是索引。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼。

錯誤碼ID

錯誤信息

10200011

The getIndexOf method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. let result = lightWeightSet.getIndexOf("sparrow");

remove

remove(key: T): T

刪除并返回指定key對應的元素。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

key

T

指定key。

返回值:

類型

說明

T

返回刪除元素的值。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼。

錯誤碼ID

錯誤信息

10200011

The remove method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. let result = lightWeightSet.remove("sparrow");

removeAt

removeAt(index: number): boolean

刪除指定下標所對應的元素。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

index

number

指定下標。

返回值:

類型

說明

boolean

確認是否成功刪除元素

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼

錯誤碼ID

錯誤信息

10200011

The removeAt method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. let result = lightWeightSet.removeAt(1);

getValueAt

getValueAt(index: number): T

獲取此容器中指定下標對應的元素。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

index

number

指定下標。

返回值:

類型

說明

T

返回指定下標對應的元素。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼

錯誤碼ID

錯誤信息

10200011

The getValueAt method cannot be bound.

參數(shù):

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. let result = lightWeightSet.getValueAt(1);

clear

clear(): void

清除容器中的所有元素,并把length置為0。

系統(tǒng)能力: SystemCapability.Utils.Lang

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼。

錯誤碼ID

錯誤信息

10200011

The clear method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. lightWeightSet.clear();

toString

toString(): String

獲取包含容器中所有鍵和值的字符串。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

String

返回對應字符串。

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. let result = lightWeightSet.toString();

toArray

toArray(): Array<T>

獲取包含此容器中所有對象的數(shù)組。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

Array<T>

返回對應數(shù)組。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼

錯誤碼ID

錯誤信息

10200011

The toArray method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. let result = lightWeightSet.toArray();

values

values(): IterableIterator<T>

返回包含此映射中包含的鍵值的新迭代器對象。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

IterableIterator<T>

返回一個迭代器。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼。

錯誤碼ID

錯誤信息

10200011

The values method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. let iter = lightWeightSet.values();
  5. let index = 0;
  6. while(index < lightWeightSet.length) {
  7. console.log(JSON.stringify(iter.next().value));
  8. index++;
  9. }

forEach

forEach(callbackFn: (value?: T, key?: T, set?: LightWeightSet<T>) => void, thisArg?: Object): void

通過回調函數(shù)來遍歷LightWeightSet實例對象上的元素以及元素對應的下標。

系統(tǒng)能力: SystemCapability.Utils.Lang

參數(shù):

參數(shù)名

類型

必填

說明

callbackFn

function

回調函數(shù)。

thisArg

Object

callbackfn被調用時用作this值。

callbackfn的參數(shù)說明:

參數(shù)名

類型

必填

說明

value

T

當前遍歷到的元素。

key

T

當前遍歷到的元素(和value相同)。

set

LightWeightSet<T>

當前調用forEach方法的實例對象。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼

錯誤碼ID

錯誤信息

10200011

The forEach method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("sparrow");
  3. lightWeightSet.add("gull");
  4. lightWeightSet.forEach((value, key) => {
  5. console.log("value:" + value, "key:" + key);
  6. });

entries

entries(): IterableIterator<[T, T]>

返回包含此映射中包含的鍵值對的新迭代器對象。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

IterableIterator<[T, T]>

返回一個迭代器。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼。

錯誤碼ID

錯誤信息

10200011

The entries method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. let iter = lightWeightSet.entries();
  5. let index = 0;
  6. while(index < lightWeightSet.length) {
  7. console.log(JSON.stringify(iter.next().value));
  8. index++;
  9. }

[Symbol.iterator]

[Symbol.iterator](): IterableIterator<T>

返回一個迭代器,迭代器的每一項都是一個 JavaScript 對象,并返回該對象。

系統(tǒng)能力: SystemCapability.Utils.Lang

返回值:

類型

說明

IterableIterator<T>

返回一個迭代器。

錯誤碼:

以下錯誤碼的詳細介紹請參見語言基礎類庫錯誤碼。

錯誤碼ID

錯誤信息

10200011

The Symbol.iterator method cannot be bound.

示例:

  1. let lightWeightSet = new LightWeightSet();
  2. lightWeightSet.add("squirrel");
  3. lightWeightSet.add("sparrow");
  4. // 使用方法一:
  5. for (let item of lightWeightSet) {
  6. console.log("value:" + item);
  7. }
  8. // 使用方法二:
  9. let iter = lightWeightSet[Symbol.iterator]();
  10. let temp = iter.next().value;
  11. while(temp != undefined) {
  12. console.log("value:" + temp);
  13. temp = iter.next().value;
  14. }
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號