ArrayList
Inspect one language lane at a time so line-level text and code deltas stay readable.
Diff Lane
English
0 modified sections0 code block delta0 anchor delta
Diff Lane
中文
2 modified sections0 code block delta0 anchor delta
modifiedArrayListtext+1 line
v1.0.5
Section Text
1
使用 ArrayList 类型需要导入 collection 包:2
3
<!-- run -->4
5
6
仓颉使用 `ArrayList<T>` 表示 ArrayList 类型,T 表示 ArrayList 的元素类型,T 可以是任意类型。7
8
ArrayList 具备非常好的扩容能力,适合于需要频繁增加和删除元素的场景。9
10
相比 Array,ArrayList 既可以原地修改元素,也可以原地增加和删除元素。11
12
ArrayList 的可变性是一个非常有用的特征,可以让同一个 ArrayList 实例的所有引用都共享同样的元素,并且对它们统一进行修改。13
14
15
元素类型不相同的 ArrayList 是不相同的类型,所以它们之间不可以互相赋值。16
17
因此以下例子是不合法的。18
19
20
仓颉中可以使用构造函数的方式构造一个指定的 ArrayList。21
22
<!-- run -->Code 1 · cangjie
1
import std.collection.*Code 2 · cangjie
1
var a: ArrayList<Int64> = ... // ArrayList whose element type is Int642
var b: ArrayList<String> = ... // ArrayList whose element type is StringCode 3 · cangjie
1
b = a // Type mismatchCode 4 · cangjie
1
let a = ArrayList<String>() // Created an empty ArrayList whose element type is String2
let b = ArrayList<String>(100) // Created an ArrayList whose element type is String, and allocate a space of 1003
let c = ArrayList<Int64>([0, 1, 2]) // Created an ArrayList whose element type is Int64, containing elements 0, 1, 24
let d = ArrayList<Int64>(c) // Use another Collection to initialize an ArrayList5
let e = ArrayList<String>(2, {x: Int64 => x.toString()}) // Created an ArrayList whose element type is String and size is 2. All elements are initialized by specified rule functionv1.1.0
Section Text
1
使用 ArrayList 类型需要导入 collection 包:2
3
<!-- run -->4
5
6
仓颉使用 `ArrayList<T>` 表示 ArrayList 类型,T 表示 ArrayList 的元素类型,T 可以是任意类型。7
8
ArrayList 具备非常好的扩容能力,适合于需要频繁增加和删除元素的场景。9
10
相比 Array,ArrayList 既可以原地修改元素,也可以原地增加和删除元素。11
12
ArrayList 的可变性是一个非常有用的特征,可以让同一个 ArrayList 实例的所有引用都共享同样的元素,并且对它们统一进行修改。13
14
<!-- code_no_check -->15
16
17
元素类型不相同的 ArrayList 是不相同的类型,所以它们之间不可以互相赋值。18
19
因此以下例子是不合法的。20
21
<!-- code_no_check -->22
23
24
仓颉中可以使用构造函数的方式构造一个指定的 ArrayList。25
26
<!-- run -->Code 1 · cangjie
1
import std.collection.*Code 2 · cangjie
1
var a: ArrayList<Int64> = ... // ArrayList whose element type is Int642
var b: ArrayList<String> = ... // ArrayList whose element type is StringCode 3 · cangjie
1
b = a // Type mismatchCode 4 · cangjie
1
let a = ArrayList<String>() // Created an empty ArrayList whose element type is String2
let b = ArrayList<String>(100) // Created an ArrayList whose element type is String, and allocate a space of 1003
let c = ArrayList<Int64>([0, 1, 2]) // Created an ArrayList whose element type is Int64, containing elements 0, 1, 24
let d = ArrayList<Int64>(c) // Use another Collection to initialize an ArrayList5
let e = ArrayList<String>(2, {x: Int64 => x.toString()}) // Created an ArrayList whose element type is String and size is 2. All elements are initialized by specified rule functionmodified访问 ArrayList 成员text+1 line
v1.0.5
Section Text
1
当需要对 ArrayList 的所有元素进行访问时,可以使用 for-in 循环遍历 ArrayList 的所有元素。2
3
<!-- verify -->4
5
6
编译并执行上面的代码,会输出:7
8
9
当需要知道某个 ArrayList 包含的元素个数时,可以使用 size 属性获得对应信息。10
11
<!-- verify -->12
13
14
编译并执行上面的代码,会输出:15
16
17
当想访问单个指定位置的元素时,可以使用下标语法访问(下标的类型必须是 Int64)。非空 ArrayList 的第一个元素总是从位置 0 开始的。可以从 0 开始访问 ArrayList 的任意一个元素,直到最后一个位置(ArrayList 的 size - 1)。使用负数或大于等于 size 的索引会触发运行时异常。18
19
20
ArrayList 也支持下标中使用 Range 的语法,详见 [Array](../basic_data_type/array.md#array) 章节。Code 1 · cangjie
1
import std.collection.ArrayList2
3
main() {4
let list = ArrayList<Int64>([0, 1, 2])5
for (i in list) {6
println("The element is ${i}")7
}8
}Code 2 · text
1
The element is 02
The element is 13
The element is 2Code 3 · cangjie
1
import std.collection.ArrayList2
3
main() {4
let list = ArrayList<Int64>([0, 1, 2])5
if (list.size == 0) {6
println("This is an empty arraylist")7
} else {8
println("The size of arraylist is ${list.size}")9
}10
}Code 4 · text
1
The size of arraylist is 3Code 5 · cangjie
1
let a = list[0] // a == 02
let b = list[1] // b == 13
let c = list[-1] // Runtime exceptionsv1.1.0
Section Text
1
当需要对 ArrayList 的所有元素进行访问时,可以使用 for-in 循环遍历 ArrayList 的所有元素。2
3
<!-- verify -->4
5
6
编译并执行上面的代码,会输出:7
8
9
当需要知道某个 ArrayList 包含的元素个数时,可以使用 size 属性获得对应信息。10
11
<!-- verify -->12
13
14
编译并执行上面的代码,会输出:15
16
17
当想访问单个指定位置的元素时,可以使用下标语法访问(下标的类型必须是 Int64)。非空 ArrayList 的第一个元素总是从位置 0 开始的。可以从 0 开始访问 ArrayList 的任意一个元素,直到最后一个位置(ArrayList 的 size - 1)。使用负数或大于等于 size 的索引会触发运行时异常。18
19
<!-- code_no_check -->20
21
22
ArrayList 也支持下标中使用 Range 的语法,详见 [Array](../basic_data_type/array.md#array) 章节。Code 1 · cangjie
1
import std.collection.ArrayList2
3
main() {4
let list = ArrayList<Int64>([0, 1, 2])5
for (i in list) {6
println("The element is ${i}")7
}8
}Code 2 · text
1
The element is 02
The element is 13
The element is 2Code 3 · cangjie
1
import std.collection.ArrayList2
3
main() {4
let list = ArrayList<Int64>([0, 1, 2])5
if (list.size == 0) {6
println("This is an empty arraylist")7
} else {8
println("The size of arraylist is ${list.size}")9
}10
}Code 4 · text
1
The size of arraylist is 3Code 5 · cangjie
1
let a = list[0] // a == 02
let b = list[1] // b == 13
let c = list[-1] // Runtime exceptions