ArrayList是一种线性数据结构,底层基于数组实现。ArrayList会根据实际需要动态调整容量,每次扩容增加50%。
ArrayList和Vector相似,都是基于数组实现。它们都可以动态调整容量,但Vector每次扩容增加1倍。
ArrayList和LinkedList相比,ArrayList的随机访问效率更高。但由于ArrayList的增删操作会影响数组内其他元素的移动,LinkedList的增加和删除操作效率更高。
推荐使用场景: 当需要频繁读取集合中的元素时,推荐使用ArrayList。
HarmonyOS 线性容器ArrayList 的好处
一、动态调整大小
- 灵活性:ArrayList是一个可以动态调整大小的列表,可以根据需要自动增加或者减少容量。这种动态调整的特性使得ArrayList在处理不确定大小的数据集时更加灵活。
二、高效随机访问
- 快速访问:ArrayList底层基于数组实现,因此支持高效的随机访问。通过索引可以直接访问到ArrayList中的任意元素,时间复杂度为O(1)。
- 应用场景:当需要频繁读取集合中的元素时,ArrayList是一个很好的选择。例如,在需要快速查找、修改或遍历数据的场景中,ArrayList都能提供出色的性能。
三、丰富的操作方法
- 便捷操作:ArrayList提供了丰富的方法,如add()、remove()、get()、set()等,方便对列表中的元素进行操作。
- 扩展功能:除了基本的增删改查操作外,ArrayList还支持插入、判断包含、获取元素索引等高级操作,进一步提高了开发的便捷性。
四、性能优化
- 扩容策略:虽然ArrayList在动态扩容时会有一定的开销,但其扩容策略(如每次扩容增加一定比例的容量)可以在一定程度上减少扩容的次数,从而优化性能。
- 内存利用:ArrayList通过动态调整大小来优化内存利用,避免了因数组大小固定而导致的内存浪费或频繁复制数据的开销。
五、易于集成和使用
- 集成方便:ArrayList作为HarmonyOS容器类库的一部分,可以方便地与其他HarmonyOS组件和框架进行集成。
- 使用简单:ArrayList的API设计简洁明了,易于学习和使用。开发者可以快速地掌握ArrayList的使用方法,并将其应用于实际项目中。
ArrayList
1.constructor
2.add
3.insert
4.has
5.sort
6.remove
导入模块
import { ArrayList } from '@kit.ArkTS';
ArrayList
属性
名称 | 类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
length | number | 是 | 否 | ArrayList的元素个数。 |
1. constructor
constructor()
ArrayList的构造函数。
使用方式:
let arrayList: ArrayList<string | number> = new ArrayList();
2. add
add(element: T): boolean
在ArrayList尾部插入元素。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
element | T | 是 | 待插入的元素。 |
返回值:
类型 | 说明 |
---|---|
boolean | 插入成功返回true,失败返回false。 |
使用方式:
class C1 {
name: string = ""
age: string = ""
}
let arrayList: ArrayList<string | number | boolean | Array<number> | C1> = new ArrayList();
let result1 = arrayList.add("a");
let arrayList1: ArrayList<number> = new ArrayList();
let result2 = arrayList.add(1);
let b = [1, 2, 3];
let result3 = arrayList.add(b);
let c : C1 = {name: "Dylan", age: "13"}
let result4 = arrayList.add(c);
let result5 = arrayList.add(false);
3. insert
insert(element: T, index: number): void
在长度范围内任意位置插入指定元素。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
element | T | 是 | 被插入的元素。 |
index | number | 是 | 被插入的位置索引。需要小于等于int32_max即2147483647。 |
使用方式:
let arrayList: ArrayList<number | string | boolean> = new ArrayList();
arrayList.insert("A", 0);
arrayList.insert(0, 1);
arrayList.insert(true, 2);
4. has
has(element: T): boolean
判断此ArrayList中是否含有该指定元素。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
element | T | 是 | 指定元素。 |
返回值:
类型 | 说明 |
---|---|
boolean | 返回true表示包含指定元素,否则返回false。 |
使用方式:
let arrayList: ArrayList<string> = new ArrayList();
arrayList.add("squirrel");
let result: boolean = arrayList.has("squirrel");
5. sort
sort(comparator?: (firstValue: T, secondValue: T) => number): void
对ArrayList中的元素排序。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
comparator | function | 否 | 回调函数,默认为升序排序的回调函数。 |
comparator的参数说明:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
firstValue | T | 是 | 前一项元素。 |
secondValue | T | 是 | 后一项元素。 |
使用方式:
let arrayList: ArrayList<number> = new ArrayList();
arrayList.add(2);
arrayList.add(4);
arrayList.add(5);
arrayList.add(4);
arrayList.sort((a: number, b: number) => a - b);
arrayList.sort((a: number, b: number) => b - a);
arrayList.sort();
6. remove
remove(element: T): boolean
删除查找到的第一个指定的元素。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
element | T | 是 | 指定元素。 |
返回值:
类型 | 说明 |
---|---|
boolean | 删除成功返回true,失败返回false。 |
使用方式:
let arrayList: ArrayList<number> = new ArrayList();
arrayList.add(2);
arrayList.add(4);
arrayList.add(5);
arrayList.add(4);
let result: boolean = arrayList.remove(2);
如需要其他方法 请参考官方文档
制作不易 点个关注再走吧。°(°¯᷄◠¯᷅°)°。