鸿蒙开发-UI-交互事件-键鼠事件
鸿蒙开发-UI-交互事件-焦点事件
鸿蒙开发-UI-交互事件-手势事件
鸿蒙开发-UI-web
鸿蒙开发-UI-web-页面
鸿蒙开发-ArkTS语言-基础类库
鸿蒙开发-ArkTS语言-并发
鸿蒙开发-ArkTS语言-并发-案例
文章目录
前言
一、容器类库概述
二、线性容器
1.ArrayList
2.Vector
3.List
4.LinkedList
5.Deque
6.Queue
7.Stack
三、线性容器使用
总结
前言
上文详细学习了鸿蒙开发使用多线程并发的开发方式,针对CPU密集、IO密集以及同步任务开发场景做了一些开发说明,本文将学习鸿蒙开发ArkTS语言容器类库相关知识
一、容器类库概述
容器类库用于存储各种数据类型的元素,并具备一系列处理数据元素的方法。容器类采用了类似静态语言的方式来实现,并通过对存储位置以及属性的限制,让每种类型的数据都能在完成自身功能的基础上去除冗余逻辑,保证了数据的高效访问,提升了应用的性能。
二、线性容器
线性容器实现能按顺序访问的数据结构,其底层主要通过数组实现,包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七种。
1.ArrayList
常用操作API:
操作 | 描述 |
---|---|
增加元素 | 通过add(element: T)函数每次在数组尾部增加一个元素。 |
通过insert(element: T, index: number)在指定位置插入一个元素。 | |
访问元素 | 通过arr[index]获取指定index对应的value值,通过指令获取保证访问速度。 |
通过forEach(callbackFn: (value: T, index?: number, arrlist?: ArrayList<T>) => void, thisArg?: Object): void访问整个ArrayList容器的元素。 | |
通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。 | |
修改元素 | 通过arr[index] = xxx修改指定index位置对应的value值。 |
删除元素 | 通过remove(element: T)删除第一个匹配到的元素。 |
通过removeByRange(fromIndex: number, toIndex:number)删除指定范围内的元素。 |
2.Vector
常用操作API:
操作 | 描述 |
---|---|
增加元素 | 通过add(element: T)函数每次在数组尾部增加一个元素。 |
通过insert(element: T, index: number)在指定位置插入一个元素。 | |
访问元素 | 通过vec[index]获取指定index对应的value值,通过指令获取保证访问速度。 |
通过get(index: number)获取指定index位置对应的元素。 | |
通过getLastElement()获取最后一个元素。 | |
通过getIndexOf(element:T)获取第一个匹配到元素的位置。 | |
通过getLastIndexOf(element:T)获取最后一个匹配到元素的位置。 | |
通过forEach(callbackFn: (value: T, index?: number, Vector?: Vector<T>) => void, thisArg?: Object)访问整个Vector的元素。 | |
通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。 | |
修改元素 | 通过vec[index]=xxx修改指定index位置对应的value值。 |
通过set(index:number,element:T)修改指定index位置的元素值为element。 | |
通过setLength(newSize:number)设置Vector的长度大小。 | |
删除元素 | 通过removeByIndex(index:number)删除index位置对应的value值。 |
通过remove(element:T)删除第一个匹配到的元素。 | |
通过removeByRange(fromIndex:number,toIndex:number)删除指定范围内的元素。 |
3.List
常用操作API:
操作 | 描述 |
---|---|
增加元素 | 通过add(element: T)函数每次在数组尾部增加一个元素。 |
通过insert(element: T, index: number)在指定位置插入一个元素。 | |
访问元素 | 通过list[index]获取指定index对应的value值,通过指令获取保证访问速度。 |
通过get(index: number)获取指定index位置对应的元素。 | |
通过getFirst()获取第一个元素。 | |
通过getLast()获取最后一个元素。 | |
通过getIndexOf(element: T)获取第一个匹配到元素的位置。 | |
通过getLastIndexOf(element: T)获取最后一个匹配到元素的位置。 | |
通过forEach(callbackfn: (value:T, index?: number, list?: List<T>)=> void,thisArg?: Object)访问整个List的元素。 | |
通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。 | |
修改元素 | 通过list[index] = xxx修改指定index位置对应的value值。 |
通过set(index:number, element: T)修改指定index位置的元素值为element。 | |
通过replaceAllElements(callbackFn:(value: T,index?: number,list?: List<T>)=>T,thisArg?: Object)对List内元素进行替换操作。 | |
删除元素 | 通过removeByIndex(index:number)删除index位置对应的value值。 |
通过remove(element:T)删除第一个匹配到的元素。 |
4.LinkedList
常用操作API:
操作 | 描述 |
---|---|
增加元素 | 通过add(element: T)函数每次在数组尾部增加一个元素。 |
通过insert(index: number, element: T)在指定位置插入一个元素。 | |
访问元素 | 通过list[index]获取指定index对应的value值,通过指令获取保证访问速度。 |
通过get(index: number)获取指定index位置对应的元素。 | |
通过getFirst()获取第一个元素。 | |
通过getLast()获取最后一个元素。 | |
通过getIndexOf(element: T)获取第一个匹配到元素的位置。 | |
通过getLastIndexOf(element: T)获取最后一个匹配到元素的位置。 | |
通过forEach(callbackFn: (value: T, index?: number, list?: LinkedList<T>) => void, thisArg?: Object)访问整个LinkedList的元素。 | |
通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。 | |
修改元素 | 通过list[index]=xxx修改指定index位置对应的value值。 |
通过set(index: number,element: T)修改指定index位置的元素值为element。 | |
删除元素 | 通过removeByIndex(index: number)删除index位置对应的value值。 |
通过remove(element: T)删除第一个匹配到的元素。 |
5.Deque
常用操作API:
操作 | 描述 |
---|---|
增加元素 | 通过insertFront(element: T)函数每次在队头增加一个元素。 |
增加元素 | 通过insertEnd(element: T)函数每次在队尾增加一个元素。 |
访问元素 | 通过getFirst()获取队首元素的value值,但是不进行出队操作。 |
通过getLast()获取队尾元素的value值,但是不进行出队操作。 | |
通过popFirst()获取队首元素的value值,并进行出队操作。 | |
通过popLast()获取队尾元素的value值,并进行出队操作。 | |
通过forEach(callbackFn:(value: T, index?: number, deque?: Deque<T>) => void, thisArg?: Object)访问整个Deque的元素。 | |
通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。 | |
修改元素 | 通过forEach(callbackFn:(value: T, index?: number, deque?: Deque<T>)=> void, thisArg?: Object)对队列进行修改操作。 |
删除元素 | 通过popFirst()对队首元素进行出队操作并删除。 |
通过popLast()对队尾元素进行出队操作并删除。 |
6.Queue
常用操作API:
操作 | 描述 |
---|---|
增加元素 | 通过add(element: T)函数每次在队尾增加一个元素。 |
访问元素 | 通过getFirst()获取队首元素的value值,但是不进行出队操作。 |
通过pop()获取队首元素的value值,并进行出队操作。 | |
通过forEach(callbackFn: (value: T, index?: number, queue?: Queue<T>) => void,thisArg?: Object)访问整个Queue的元素。 | |
通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。 | |
修改元素 | 通过forEach(callbackFn:(value: T, index?: number, queue?: Queue<T>) => void,thisArg?: Object)对队列进行修改操作。 |
删除元素 | 通过pop()对队首进行出队操作并删除。 |
7.Stack
常用操作API:
操作 | 描述 |
---|---|
增加元素 | 通过push(item: T)函数每次在栈顶增加一个元素。 |
访问元素 | 通过peek()获取栈顶元素的value值,但是不进行出栈操作。 |
通过pop()获取栈顶的value值,并进行出栈操作。 | |
通过forEach(callbackFn: (value: T, index?: number, stack?: Stack<T>) => void, thisArg?: Object)访问整个Stack的元素。 | |
通过[Symbol.iterator]():IterableIterator<T>迭代器进行数据访问。 | |
通过locate(element: T)获取元素对应的位置。 | |
修改元素 | 通过forEach(callbackFn:(value: T, index?: number, stack?: Stack<T>) => void, thisArg?: Object)对栈内元素进行修改操作。 |
删除元素 | 通过pop()对栈顶进行出栈操作并删除。 |
三、线性容器使用
线性容器常用API使用案例
总结
本文详细学习鸿蒙开发ArkTS语言容器类库线性容器的特点以及常见操作的API,下文将学习非线性容器的相关知识。