HarmonyOS 线性容器ArrayList 常用的几个方法

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

属性

名称类型可读可写说明
lengthnumberArrayList的元素个数。

1. constructor

constructor()

ArrayList的构造函数。

 使用方式:

let arrayList: ArrayList<string | number> = new ArrayList();

2. add

add(element: T): boolean

在ArrayList尾部插入元素。

参数:

参数名类型必填说明
elementT待插入的元素。

返回值:

类型说明
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

在长度范围内任意位置插入指定元素。

参数:

参数名类型必填说明
elementT被插入的元素。
indexnumber被插入的位置索引。需要小于等于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中是否含有该指定元素。

参数:

参数名类型必填说明
elementT指定元素。

返回值:

类型说明
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中的元素排序。

参数:

参数名类型必填说明
comparatorfunction回调函数,默认为升序排序的回调函数。

comparator的参数说明:

参数名类型必填说明
firstValueT前一项元素。
secondValueT后一项元素。

 使用方式:

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

删除查找到的第一个指定的元素。

参数:

参数名类型必填说明
elementT指定元素。

返回值:

类型说明
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);

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode230.二叉搜索树中第k小的元素

标签&#xff1a;二叉搜索树&#xff1b;中序遍历 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 小的元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1…

如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制

如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制 如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制环境准备1. 配置主服务器&#xff08;Publisher&#xff09;1.1 修改 postgresql.conf1.2 修改 pg_hba.conf1.3 重启 PostgreSQL 服务1.4 创建逻辑复制…

苹果开发者入门:修复 SwiftUI 中“跑偏的”动画(下)

概述 大家知道 SwiftUI 不仅仅是一款 App 界面布局的超级利器&#xff0c;它同样提供了花样百出的动画和转场机制将 UI 世界点缀的“楚楚动人”。不过&#xff0c;对于苹果开发新入门的秃头小码农来说&#xff0c;使用动画貌似没有想象的那么易如反掌。 如上图所示&#xff0c…

kafka-clients之监控

以生产者为例介绍spring如何整合kafka-clients&#xff0c;micrometer&#xff0c;prometheus。上报生产者监控打点 可以通过在Spring Boot应用中手动添加Kafka Producer的度量监控&#xff0c;确保Prometheus能够采集到Producer的指标。以下是一个示例代码&#xff0c;其中使…

【万字详解】三维重建(二)——NeRF、NeuS、MeshUDF、NeuralUDF、3DGS、GShell

文章目录 一、NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis(推荐读)1.1 式1 神经网络的输入和输出1.2 式2 体素渲染算法1.3 式3 损失函数1.4 位置编码1.5 基本原理二、经典的重建流程2.1 传统的三维重建pipeline2.2 神经网络回归2.3 可微渲染最优…

优化Go语言中的网络连接:设置代理超时参数

网络连接优化的重要性 在分布式系统和微服务架构中&#xff0c;网络请求的效率直接影响到整个系统的响应速度。合理的超时设置可以防止系统在等待网络响应时陷入无限期的阻塞&#xff0c;从而提高系统的吞吐量和用户体验。特别是在使用代理服务器时&#xff0c;由于增加了网络…

【人工智能解读】神经网络(CNN)的特点及其应用场景器学习(Machine Learning, ML)的基本概念

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

颜色的基本处理

数码相机能够获取彩色图像&#xff0c;但相机的色彩处理是一个非常复杂的过程&#xff0c;是非常重要的。 此过程生产制造商在细节方面都是不公布的&#xff0c;但是基本的概念是相同的。当相机捕捉一个真实场景时&#xff0c;是怎么还原成人眼所看到的图像呢&#xff1f; 1.R…

OpenCV 功能函数介绍 (二)

一&#xff0c;梯度处理的sobel算子函数 功能&#xff1a; 用于计算图像梯度&#xff08;gradient&#xff09;的函数 参数&#xff1a; cv2.Sobel(src, ddepth, dx, dy, ksize3, scale1, delta0, borderTypeNone) cv2.Sobel&#xff08;输入图像 &#xff0c; 应该是灰…

PostgreSQL JSON/JSONB 查询与操作指南

PostgreSQL 提供了强大的 JSON 和 JSONB 数据类型及相关操作&#xff0c;适用于存储和查询半结构化数据。本文将详细介绍其常用操作。 1. 基础操作 1.1 JSON 属性访问 ->: 返回 JSON 对象中的值&#xff0c;结果为 JSON 格式。 SELECT {"a": {"b": 1…

《宇宙机器人》提示错误弹窗“找不到d3dx9_43.dll”是什么原因?“d3dx9_43.dll缺失”怎么解决?

电脑游戏运行时常见问题解析&#xff1a;《宇宙机器人》提示“找不到d3dx9_43.dll”的解决之道 TGA2024落幕&#xff0c;年度最佳游戏——《宇宙机器人》&#xff0c;作为一名在软件开发领域深耕多年的从业者&#xff0c;我深知电脑游戏在运行过程中可能会遇到的各种挑战&…

2024年山西省第十八届职业院校技能大赛 (高职组)“信息安全管理与评估”赛项规程

2024年山西省第十八届职业院校技能大赛 &#xff08;高职组&#xff09;“信息安全管理与评估”赛项规程 一、赛项名称 赛项名称&#xff1a;信息安全管理与评估 英文名称&#xff1a;Information Security Management and Evaluation 赛项组别&#xff1a;高职教师组 赛项归属…

modbus学习笔记

ModBus协议的两大变体&#xff1a;ModBus RTU 与 ModBus TCP Modbus报文头(MBAP)帧结构&#xff08;PDU&#xff09;7个字节 功能码&#xff1a;1个字节 注意&#xff1a;据说RTU和TCP的差距就是效验码 Modbus协议最基本的通信单位是帧&#xff0c;整个Modbus帧又被称之为应用…

Flutter 桌面端串口配置

前言 我使用flutter_libserialport包在macOS中实现串口通信的功能&#xff0c;可以实现数据收发&#xff0c;但是收到的内容是乱码。这种情况一般都是由于波特率和硬件设备不一致导致的。 配置串口配置 1.打开串口读写 import package:flutter_libserialport/flutter_libser…

JavaScript逆向时,常用的11个hook

提示:记录工作中遇到的需求及解决办法 文章目录 前言01、dom操作02、Cookie操作03、事件监听操作04、AJAX拦截操作05、函数替换操作06、Header操作07、URL操作08、JSON.stringify操作09、JSON.parse操作10、eval操作11、Function操作前言 在逆向分析JavaScript代码时,开发者…

什么是EDI 896?

EDI 896 报文即产品尺寸维护报告&#xff08;Product Dimension Maintenance&#xff09;&#xff0c;是一种常用于零售和供应链管理领域的EDI&#xff08;电子数据交换&#xff09;事务集。它的主要功能是用来传递或更新有关产品尺寸、属性和分类等信息。此消息通常在以下场景…

PPO系列2 - GAE优势函数

策略梯度&#xff1a; 痛点&#xff1a; 1. t时刻的动作&#xff0c;其只会影响t时刻之后得到的Reward&#xff0c;和之前的无关。 2. t时刻的动作&#xff0c;对接下来邻近的几个Reward关系较大&#xff0c;跟远的关系小。 改进&#xff1a; 1. 只累加t时刻之后的Reward。 2. …

subList与原始List相互影响

在 Java 中&#xff0c;List#subList(int fromIndex, int toIndex) 方法返回的是原始列表的一个视图&#xff08;view&#xff09;&#xff0c;而不是一个独立的副本。这意味着对 subList 的任何修改都会反映到原始列表中&#xff0c;反之亦然。这可能会导致意外的行为&#xf…

pytest入门三:setup、teardown

https://zhuanlan.zhihu.com/p/623447031 function对应类外的函数&#xff0c;每个函数调用一次 import pytest def setup_module():print(开始 module)def teardown_module():print(结束 module)def setup_function():print(开始 function)def teardown_function():print(结…

React+Antd修改Table组件滚动条样式

版本 Antd 5.x.x React 18.x.x Tsx <TabledataSource{SocrePaMing.length > 0 ? SocrePaMing : []}columns{tableScoreColumns}rowKey"attribute"pagination{false}className"custom-table"scroll{{ y: 400 }} /> Css .ant-table-body …