0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony语言基础类库【@ohos.util.List (线性容器List)】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-05-10 16:57 次阅读

List底层通过单向链表实现,每个节点有一个指向后一个元素的引用。当需要查询元素时,必须从头遍历,插入、删除效率高,查询效率低。List允许元素为null。

List和[LinkedList]相比,LinkedList是双向链表,可以快速地在头尾进行增删,而List是单向链表,无法双向操作。

推荐使用场景: 当需要频繁的插入删除时,推荐使用List高效操作。

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

  • T:Type,类

说明:

本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import List from '@ohos.util.List';

List

鸿蒙开发指导文档:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

属性

系统能力: SystemCapability.Utils.Lang

名称类型可读可写说明
lengthnumberList的元素个数。

HarmonyOSOpenHarmony鸿蒙文档籽料:mau123789是v直接拿

搜狗高速浏览器截图20240326151450.png

constructor

constructor()

List的构造函数。

系统能力: SystemCapability.Utils.Lang

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]

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

示例:

let list = new List();

add

add(element: T): boolean

在List尾部插入元素。

系统能力: SystemCapability.Utils.Lang

参数

参数名类型必填说明
elementT添加进去的元素。

返回值:

类型说明
boolean插入成功返回true,否则返回false。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The add method cannot be bound.

示例:

let list = new List();
let result1 = list.add("a");
let result2 = list.add(1);
let b = [1, 2, 3];
let result3 = list.add(b);
let c = {name : "Dylon", age : "13"};
let result4 = list.add(c);
let result5 = list.add(false);

insert

insert(element: T, index: number): void

在长度范围内任意位置插入指定元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT插入元素。
indexnumber插入的位置索引

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The insert method cannot be bound.
10200001The value of index is out of range.

示例:

let list = new List();
list.insert("A", 0);
list.insert(0, 1);
list.insert(true, 2);

has

has(element: T): boolean

判断此List中是否含有该指定元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定元素。

返回值:

类型说明
boolean包含指定元素返回true,否则返回false。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The has method cannot be bound.

示例:

let list = new List();
list.add("squirrel");
let result = list.has("squirrel");

get

get(index: number): T

根据下标获取List中的元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
indexnumber要查找的下标。

返回值:

类型说明
T根据下标查找到的元素。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

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

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(2);
list.add(1);
list.add(2);
list.add(4);
let result = list.get(2);

getLastIndexOf

getLastIndexOf(element: T): number

查找指定元素最后一次出现的下标值,查找失败返回-1。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定元素。

返回值:

类型说明
number返回指定元素最后一次出现的下标值,没有找到返回-1。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The getLastIndexOf method cannot be bound.

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(2);
list.add(1);
list.add(2);
list.add(4);
let result = list.getLastIndexOf(2);

getIndexOf

getIndexOf(element: T): number

查找指定元素第一次出现的下标值,查找失败返回-1。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定元素。

返回值:

类型说明
number返回第一次找到指定元素的下标,没有找到返回-1。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The getIndexOf method cannot be bound.

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(2);
list.add(1);
list.add(2);
list.add(4);
let result = list.getIndexOf(2);

equal

equal(obj: Object): boolean

比较指定对象与此List是否相等。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
objObject用来比较的对象。

返回值:

类型说明
boolean如果对象与此列表相同返回true,否则返回false。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The equal method cannot be bound.

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
let obj = new List();
obj.add(2);
obj.add(4);
obj.add(5);
let result = list.equal(obj);

removeByIndex

removeByIndex(index: number): T

根据元素的下标值查找元素,并将其删除。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
indexnumber指定元素的下标值。

返回值:

类型说明
T返回被删除的元素。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The removeByIndex method cannot be bound.
10200001The value of index is out of range.

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(2);
list.add(4);
let result = list.removeByIndex(2);

remove

remove(element: T): boolean

删除查找到的第一个指定的元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定元素。

返回值:

类型说明
boolean删除成功返回true,否则返回false。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

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

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
let result = list.remove(2);

replaceAllElements

replaceAllElements(callbackFn: (value: T, index?: number, list?: List) => T, thisArg?: Object): void

用户操作List中的元素,用操作后的元素替换原元素并返回操作后的元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
callbackFnfunction回调函数。
thisArgObjectcallbackfn被调用时用作this值。

callbackfn的参数说明:

参数名类型必填说明
valueT当前遍历到的元素。
indexnumber当前遍历到的下标值。
listList当前调用replaceAllElements方法的实例对象。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The replaceAllElements method cannot be bound.

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
list.replaceAllElements((value) = > {
  // 用户操作逻辑根据实际场景进行添加。
  return value;
});

forEach

forEach(callbackFn: (value: T, index?: number, List?: List) => void, thisArg?: Object): void

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

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
callbackFnfunction回调函数。
thisArgObjectcallbackfn被调用时用作this值。

callbackfn的参数说明:

参数名类型必填说明
valueT当前遍历到的元素。
indexnumber当前遍历到的下标值。
ListList当前调用forEach方法的实例对象。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

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

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
list.forEach((value, index) = > {
    console.log("value:" + value, "index:" + index);
});

sort

sort(comparator: (firstValue: T, secondValue: T) => number): void

对List中的元素进行一个排序操作。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
comparatorfunction回调函数。

comparator的参数说明:

参数名类型必填说明
firstValueT前一项元素。
secondValueT后一项元素。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The sort method cannot be bound.

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
list.sort((a: number, b: number) = > a - b); // 结果为升序排列
list.sort((a: number, b: number) = > b - a); // 结果为降序排列

getSubList

getSubList(fromIndex: number, toIndex: number): List

根据下标截取List中的一段元素,并返回这一段List实例,包括起始值但不包括终止值。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
fromIndexnumber起始下标。
toIndexnumber终止下标。

返回值:

类型说明
List返回List对象实例。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The getSubList method cannot be bound.
10200001The value of fromIndex or toIndex is out of range.

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
let result = list.getSubList(1, 3);

clear

clear(): void

清除List中的所有元素,并把length置为0。

系统能力: SystemCapability.Utils.Lang

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

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

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
list.clear();

set

set(index: number, element: T): T

将此 List 中指定位置的元素替换为指定元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
indexnumber查找的下标值。
elementT用来替换的元素。

返回值:

类型说明
T返回替换后的元素

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The set method cannot be bound.
10200001The value of index is out of range.

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
let result = list.set(2, "b");

convertToArray

convertToArray(): Array

把当前List实例转换成数组,并返回转换后的数组。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
Array返回转换后的数组。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The convertToArray method cannot be bound.

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
let result = list.convertToArray();

isEmpty

isEmpty(): boolean

判断该List是否为空。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
boolean为空返回true,不为空返回false。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

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

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
let result = list.isEmpty();

getFirst

getFirst(): T

获取List实例中的第一个元素。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
T返回实例的第一个元素。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The getFirst method cannot be bound.

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
let result = list.getFirst();

getLast

getLast(): T

获取List实例中的最后一个元素。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
T返回实例的最后一个元素。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

错误码ID错误信息
10200011The getLast method cannot be bound.

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
let result = list.getLast();

[Symbol.iterator]

Symbol.iterator: IterableIterator

返回一个迭代器,迭代器的每一项都是一个 JavaScript 对象,并返回该对象。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
IterableIterator返回一个迭代器。

错误码:

以下错误码的详细介绍请参见[语言基础类库错误码]。

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

示例:

let list = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);

// 使用方法一:
for (let item of list) { 
  console.log("value: " + item); 
}

// 使用方法二:
let iter = list[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {
  console.log("value: " + temp);
  temp = iter.next().value;
}

sf

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    7832

    浏览量

    148919
  • 鸿蒙
    +关注

    关注

    55

    文章

    1875

    浏览量

    42181
  • OpenHarmony
    +关注

    关注

    24

    文章

    3436

    浏览量

    15250
收藏 人收藏

    评论

    相关推荐

    c++之list容器

    list是序列容器,允许在序列中的任何位置执行固定O(1)时间复杂度的插入和删除操作,并在两个方向进行迭代。list容器是一个双向循环链表。
    的头像 发表于 07-15 08:53 824次阅读
    c++之<b class='flag-5'>list</b><b class='flag-5'>容器</b>

    OpenHarmony语言基础类库【@ohos.util.Vector (线性容器Vector)】

    Vector是一种线性数据结构,底层基于数组实现。当Vector的内存用尽时,会自动分配更大的连续内存区,将原先的元素复制到新的内存区,并释放旧的内存区。使用Vector能够高效快速地访问元素。
    的头像 发表于 04-28 21:24 276次阅读
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>语言</b>基础类库【@<b class='flag-5'>ohos.util</b>.Vector (<b class='flag-5'>线性</b><b class='flag-5'>容器</b>Vector)】

    OpenHarmony实战开发-list开发指导

    promptAction from \'@ohos.promptAction\'; export default { data: { direction: \'column\', list
    发表于 04-29 14:44

    JNI中List结构的数据是怎样返回的

    JNI中List结构的数据是怎样返回的?如何去实现?
    发表于 10-08 06:52

    HarmonyOS方舟开发框架容器API的介绍与使用

    通过数组实现,包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七种。线性容器API,充分考虑了数据访问的速度,实现了运行时(R
    发表于 03-07 11:40

    OpenHarmony 3.1 Beta版本关键特性解析——ArkUI容器API介绍

    及使用场景。下面,我们将为大家一一道来。1.1线性容器线性容器底层主要通过数组实现,包括 A
    发表于 04-24 14:58

    HarmonyOS线性容器特性及使用场景

    : ${stack.length}`); // List import List from \'@ohos.util.List\'; // 导入List模块 let
    发表于 09-27 15:10

    List of Equivalent Product

    List of Equivalent Product
    发表于 08-19 12:32 12次下载

    Allwinner Axx SDRAM Support List

    Allwinner Axx SDRAM Support List——全志分SDRAM支持列表。
    发表于 09-26 16:31 8次下载

    Python基础变量类型—List分析

    本文基于Python基础,主要介绍了Python基础中list列表,通过list列表的两个函数 ,对list的语法做了详细的讲解,用丰富的案例 ,代码效果图的展示帮助大家更好理解 。
    的头像 发表于 12-24 17:37 853次阅读

    Automotive Recommended Products List

    Automotive Recommended Products List
    发表于 02-03 15:27 0次下载
    Automotive Recommended Products <b class='flag-5'>List</b>

    什么是list

    list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器
    的头像 发表于 02-27 15:52 1254次阅读

    E8a Emulator 软件 Component List

    E8a Emulator 软件 Component List
    发表于 04-03 19:54 0次下载
    E8a Emulator 软件 Component <b class='flag-5'>List</b>

    E8a Emulator 软件 Component List

    E8a Emulator 软件 Component List
    发表于 07-14 11:01 0次下载
    E8a Emulator 软件 Component <b class='flag-5'>List</b>

    List 转 Map的方法

    在我们平时的工作中,充满了各种类型之间的转换。今天小编带大家上手 List 转 Map 的各种操作。 我们将假设 List 中的每个元素都有一个标识符,该标识符将在生成的 Map 中作为
    的头像 发表于 10-09 16:10 940次阅读