HarmonyOS 线性容器List 常用的几个方法

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

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

注意

在List中使用index的方式虽然能够获取对应位置的元素,但这会导致未定义结果。推荐使用get()方法。

推荐使用场景: 当需要频繁的插入删除元素,并且需要使用单向链表时,推荐使用List高效操作。

HarmonyOS 线性容器List 的好处

一、动态调整与高效存储

  • 动态扩容:List能够根据实际需要动态调整其容量,这意味着在添加新元素时,List能够自动扩展其存储空间,无需手动进行容量管理。
  • 空间利用:通过动态扩容策略,List能够更有效地利用存储空间,避免空间浪费。

二、灵活的访问与操作

  • 随机访问:List提供了高效的随机访问能力,允许通过索引快速定位并访问元素。这对于需要频繁读取集合中元素的场景非常有用。
  • 增删操作:虽然List的增删操作可能会影响数组内其他元素的移动,但在特定场景下(如需要频繁插入和删除元素时),List仍然能够通过其灵活的插入和删除方法满足需求。

三、丰富的功能与方法

  • 多种操作方法:List提供了多种操作方法,如添加、插入、删除、查找等,这些方法使得对集合的管理和操作变得更加便捷。
  • 泛型支持:List支持泛型,这意味着可以指定集合中元素的类型,从而提高代码的安全性和可读性。

四、应用场景广泛

  • 数据结构基础:List作为数据结构的基础,在HarmonyOS开发中被广泛应用。无论是存储简单数据类型还是复杂对象,List都能提供有效的支持。
  • UI组件配合:在HarmonyOS的UI开发中,List常常与列表组件(如ListItem、ListItemGroup等)配合使用,以显示结构化、可滚动的信息。这使得List在构建用户界面时具有极高的实用价值。

List

1.constructor

2.add

3.insert

4.has

5.get

6.remove

导入模块

javascript 复制代码
import { List } from '@kit.ArkTS';

1.constructor

javascript 复制代码
constructor()

List的构造函数。

使用方式:

javascript 复制代码
let list: List<string | number | boolean | object> = new List();

2.add

javascript 复制代码
add(element: T): boolean

在List尾部插入元素。

参数:

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

返回值:

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

使用方式:

javascript 复制代码
let list: List<string | number | boolean | object> = new List();
let result1 = list.add("a");
let result2 = list.add(1);
let b = [1, 2, 3];
let result3 = list.add(b);
class C {
  name: string = ''
  age: string = ''
}
let c: C = {name : "Dylan", age : "13"};
let result4 = list.add(c);
let result5 = list.add(false);

3.insert

javascript 复制代码
insert(element: T, index: number): void

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

参数:

参数名 类型 必填 说明
element T 插入元素。
index number 插入的位置索引。需要小于等于int32_max即2147483647。

使用方式:

javascript 复制代码
let list: List<string | number | boolean> = new List();
list.insert("A", 0);
list.insert(0, 1);
list.insert(true, 2);

4.has

javascript 复制代码
has(element: T): boolean

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

参数:

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

返回值:

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

使用方式:

javascript 复制代码
let list: List<string> = new List();
list.add("squirrel");
let result = list.has("squirrel");

5.get

javascript 复制代码
get(index: number): T

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

参数:

参数名 类型 必填 说明
index number 要查找的下标。需要小于等于int32_max即2147483647。

返回值:

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

使用方式:

javascript 复制代码
let list: List<number> = 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);

6.remove

javascript 复制代码
emove(element: T): boolean

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

参数:

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

返回值:

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

使用方式:

javascript 复制代码
let list: List<number> = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
let result = list.remove(2);

如需要其他方法 请参考官方文档

制作不易 点个关注再走吧。°(°¯᷄◠¯᷅°)°。

相关推荐
NiceCloud喜云4 分钟前
ClaudeAPI 接入 n8n / Dify / Open WebUI 实战:Base URL 配置、调用示例与排错
开发语言·ai·chatgpt·aigc
庵中十三居士11 分钟前
【纯AI无人工修改】AI Agent从0到1实战:50行Python手写核心循环,一次看懂所有Agent框架的底层逻辑
开发语言·人工智能·python
Yunzenn16 分钟前
强化学习1-Liu2026_GFlowRL_精读笔记
人工智能·笔记·深度学习·机器学习·transformer·集成学习·vllm
Helen_cai18 分钟前
HarmonyOS ArkTS 实战:实现一个校园课程表与考勤管理应用
华为·harmonyos
甄同学22 分钟前
第二十篇:MCP协议集成,Claude Code如何扩展AI Agent的能力边界
开发语言·人工智能·qt
@atweiwei1 小时前
Langchainrust:中LLM-as-a-Judge,用 Rust 实现一套 LLM 评估系统
开发语言·后端·ai·rust·llm·rag
风华圆舞1 小时前
鸿蒙HarmonyOS 多模态输入实战 —— 图片与文档输入智谱/DeepSeek
开发语言·人工智能·华为·php·harmonyos·arkts·arkui
Ljwuhe1 小时前
C++——模板进阶
开发语言·c++
中国搜索直付通1 小时前
避开直付通选型暗礁:二级商户的合规生存与背景甄别
java·大数据·开发语言·人工智能·游戏
牢姐与蒯2 小时前
双指针算法
数据结构·算法