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
导入模块
import { List } from '@kit.ArkTS';
1.constructor
constructor()
List的构造函数。
使用方式:
let list: List<string | number | boolean | object> = new List();
2.add
add(element: T): boolean
在List尾部插入元素。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
element | T | 是 | 添加进去的元素。 |
返回值:
类型 | 说明 |
---|---|
boolean | 插入成功返回true,否则返回false。 |
使用方式:
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
insert(element: T, index: number): void
在长度范围内任意位置插入指定元素。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
element | T | 是 | 插入元素。 |
index | number | 是 | 插入的位置索引。需要小于等于int32_max即2147483647。 |
使用方式:
let list: List<string | number | boolean> = new List();
list.insert("A", 0);
list.insert(0, 1);
list.insert(true, 2);
4.has
has(element: T): boolean
判断此List中是否含有该指定元素。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
element | T | 是 | 指定元素。 |
返回值:
类型 | 说明 |
---|---|
boolean | 包含指定元素返回true,否则返回false。 |
使用方式:
let list: List<string> = new List();
list.add("squirrel");
let result = list.has("squirrel");
5.get
get(index: number): T
根据下标获取List中的元素。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
index | number | 是 | 要查找的下标。需要小于等于int32_max即2147483647。 |
返回值:
类型 | 说明 |
---|---|
T | 根据下标查找到的元素。 |
使用方式:
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
emove(element: T): boolean
删除查找到的第一个指定的元素。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
element | T | 是 | 指定元素。 |
返回值:
类型 | 说明 |
---|---|
boolean | 删除成功返回true,否则返回false。 |
使用方式:
let list: List<number> = new List();
list.add(2);
list.add(4);
list.add(5);
list.add(4);
let result = list.remove(2);
如需要其他方法 请参考官方文档
制作不易 点个关注再走吧。°(°¯᷄◠¯᷅°)°。