跟我一起学“仓颉”编程语言-Array数组
在编程时,需要存储并操作同类型的一组数据,这是之前学习的基本数据类型已经无法满足这种需求了,为了方便程序可以存储并操作同类型的一组数据,仓颉提供了4种Collection类型:Array、ArrayList、HashSet、HastMap,这些类型都是引用类型。
一、Array的创建
Array数组,用于存储相同数据类型的有序序列的数据,并且一旦初始化后,它的长度就固定下来了,不能对其进行新增和删除的操作。
package Study main() { // 通过[] 赋值来创建数组 let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1) // 通过构造函数来创建 3表示长度,repeat表示数组的元素 let arr2 = Array<Int64>(3, repeat: 0) println(arr2) // 通过尾随lambda表达式创建 3表示长度 let arr3 = Array<Int64>(3) {index => index} println(arr3) }二、Array的获取
判断Array是否为空
package Study main() { let array1 = [1,2,3,4,5] println(array1.isEmpty()) }获取Array的长度
package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1.size) }获取单个元素
package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1[0]) println(arr1[2]) println(arr1[arr1.size - 1]) }注意:还可以通过get函数来获取单个元素,但是get函数返回的是Option<T>类型,需要对返回值进行解构。
package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1.get(0)) println(arr1.get(0).getOrThrow()) }注意:在解构get函数的结果时,注意数组越界的问题。
获取部分元素
利用区间类型,进行切片获取
package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] // 取[0, 2)的所有元素,2位置元素取不到 println(arr1[..2]) // 取下标2之后的所有元素 println(arr1[2..]) // 取[1, 4]的所有元素 println(arr1[1..=4]) // 取所有元素 println(arr1[..]) }注意:这里的区间类型的步长(step)必须为1。
通过slice函数
package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] // 取[1, 3]所有的元素 1表示下标为1,3表示长度,即:从下标为1处,取3个元素 println(arr1.slice(1, 3)) }循环输出数组元素
package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] for (i in 0..arr1.size) { println(arr1[i]) } println() // 增强for循环 for (item in arr1) { println(item) } }判断Array数组中是否包含指定元素
package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1.contains(1)) println(arr1.contains(5)) }三、Array的修改
修改单个元素
package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] arr1[arr1.size - 1] = 5 println(arr1[arr1.size - 1]) }package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] println(arr1) // 将下标为2的元素修改成 5 arr1[2] = 5 println(arr1) }Array数组的赋值
package Study main() { let arr1: Array<Int64> = [2, 4, 1, 4, 0] var arr2: Array<Int64> = arr1 println(arr1) println(arr2) println() arr2[0] = 9 // 因为Array数组是引用类型,修改arr2的元素,会影响到arr1 println(arr1) println(arr2) // 正确做法 使用clone方法 println() arr2 = arr1.clone() arr2[0] = 6 println(arr1) println(arr2) // 获取部分元素 let arr3 = arr1.clone(1..4) println(arr3) }注意:Collection类型是引用类型,因此,Array、ArrayList、HashSet、HashMap都可以用clone方法。
四、小结
本章为大家详细的介绍了仓颉编程语言中Array数组的内容,下一章,为大家带来ArrayList集合的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉服务端开发有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!
