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

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

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

相关推荐
lzz的编码时刻1 分钟前
适配器模式 (Adapter) · 对象适配器 · 类适配器 · 实际开发中的应用
java·开发语言·适配器模式
xcLeigh7 分钟前
JAVA |日常开发中Websocket详解
java·开发语言·websocket
Muisti10 分钟前
209. 长度最小的子数组
java·数据结构·算法
不是三毛没有半14 分钟前
华为自反ACL实验
华为
WBingJ15 分钟前
李宏毅机器学习-局部最小值与鞍点
人工智能·深度学习·机器学习
L_cl24 分钟前
【NLP 14、激活函数 ② tanh激活函数】
人工智能·深度学习·自然语言处理
kris000925 分钟前
Pyhton知识分享第二十四天-模拟二叉树
开发语言·python·算法
每天八杯水D34 分钟前
gpt-apt接口调用并行处理:python 多线程处理ThreadPoolExecutor
开发语言·openai·threadpool·并行处理·gpt-api
去往火星41 分钟前
windows下Qt5自动编译配置QtMqtt环境
开发语言·qt
只因只因爆44 分钟前
Scala测试
开发语言·scala