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);

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

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

相关推荐
湘美书院--湘美谈教育7 分钟前
湘美书院AI时代的禅悟集:人机智能,反照诸我
大数据·人工智能·深度学习·机器学习·生活
2601_9669496534 分钟前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
m0_734571761 小时前
深入理解5g <十八>传输块tbsize的计算
开发语言·5g
Ivanqhz1 小时前
BM1688 双核架构
python·深度学习·神经网络·cnn·mlir
lqj_本人1 小时前
Flutter_Rust_Bridge:让 Flutter 稳定调用 Rust 的跨语言桥梁
harmonyos
知识分享小能手2 小时前
深度学习学习教程,从入门到精通,深度生成模型 —— 知识点详解与代码实现(20)
人工智能·深度学习·学习
贾伟康2 小时前
【HarmonyOS 7新能力|040】QUIC长连接工程封装:把接入逻辑放进可维护的分层结构
网络编程·harmonyos·arkts·quic·软件架构
hqzing2 小时前
Harmonybrew 仓库中的 gcc(GCC 16)和 llvm(LLVM 23)已经可用
harmonyos
西柚研究生1234562 小时前
论文分析17:YOLOv11_UAVNet:无人机航拍图像专用目标检测算法
人工智能·python·深度学习·算法·目标检测
RAN11426760082 小时前
1.3第一个程序的介绍
开发语言·qt