移动端六大语言速记:第4部分 - 数据结构
本文对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言的数据结构特性,帮助开发者快速掌握各语言的语法差异。
4. 数据结构
4.1 数组与列表
各语言数组与列表的语法对比:
语言 | 数组声明 | 动态列表 | 初始化语法 | 常用操作 |
---|---|---|---|---|
Java | Type[] arr |
List<Type> |
new Type[]{...} |
add, remove, get, set |
Kotlin | Array<Type> |
List<Type> |
arrayOf(...) |
add, remove, get, set |
Dart | List<Type> |
List<Type> |
[...] |
add, remove, [] |
Python | list |
list |
[...] |
append, remove, [] |
ArkTS | Type[] |
Array<Type> |
[...] |
push, pop, [] |
Swift | [Type] |
[Type] |
[...] |
append, remove, [] |
示例对比
Java:
// 固定大小数组
int[] numbers = new int[5]; // 创建固定大小数组
int[] nums = {
1, 2, 3, 4, 5}; // 数组字面量
// 动态列表
List<String> fruits = new ArrayList<>();
fruits.add("Apple"); // 添加元素
fruits.remove(0); // 删除元素
String fruit = fruits.get(0); // 获取元素
fruits.set(0, "Banana"); // 修改元素
// 列表操作
int size = fruits.size(); // 获取大小
boolean contains = fruits.contains("Apple"); // 检查包含
fruits.clear(); // 清空列表
Kotlin:
// 数组
val numbers = Array(5) {
0 } // 创建固定大小数组
val nums = arrayOf(1, 2, 3, 4, 5) // 数组字面量
// 列表
val fruits = mutableListOf<String>() // 可变列表
fruits.add("Apple") // 添加元素
fruits.removeAt(0) // 删除元素
val fruit = fruits[0] // 获取元素
fruits[0] = "Banana" // 修改元素
// 列表操作
val size = fruits.size // 获取大小
val contains = "Apple" in fruits // 检查包含
fruits.clear() // 清空列表
// 不可变列表
val immutableList = listOf(1, 2, 3)
Dart:
// 列表(Dart中没有独立的数组类型)
List<int> numbers = List<int>.filled(5, 0); // 固定大小列表
var nums = [1, 2, 3, 4, 5]; // 列表字面量
// 可增长列表
List<String> fruits = [];
fruits.add("Apple"); // 添加元素
fruits.removeAt(0); // 删除元素
String fruit = fruits[0]; // 获取元素
fruits[0] = "Banana"; // 修改元素
// 列表操作
int length = fruits.length; // 获取长度
bool contains = fruits.contains("Apple"); // 检查包含
fruits.clear(); // 清空列表
// 不可变列表
const immutableList = [1, 2, 3];
Python:
# 列表(Python中没有独立的数组类型)
numbers = [0] * 5 # 创建固定大小列表
nums = [1, 2, 3, 4, 5] # 列表字面量
# 列表操作
fruits = [] # 创建空列表
fruits.append("Apple") # 添加元素
fruits.pop(0) # 删除并返回元素
fruit = fruits[0] # 获取元素
fruits[0] = "Banana" # 修改元素
# 其他操作
size = len(fruits) # 获取长度
contains = "Apple" in fruits # 检查包含
fruits.clear() # 清空列表
# 列表推导式
squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16]
ArkTS:
// 数组
let numbers: number[] = new Array(5).fill(0); // 创建固定大小数组
let nums: number[] = [