在 Dart 中,哈希表(Hash Table)的实现通常是通过 Map 类来完成的
在 Dart 中,哈希表(Hash Table)的实现通常是通过 Map 类来完成的。Map 是一种键值对集合,类似于其他语言中的字典或哈希表。Dart 的 Map 提供了高效的查找、插入和删除操作。
1. 创建 Map
在 Dart 中,可以通过多种方式创建 Map。
示例代码
dart
// 创建一个空的 Map
Map<String, int> emptyMap = {};
// 创建一个带有初始键值对的 Map
Map<String, int> ages = {
'Alice': 25,
'Bob': 30,
'Charlie': 35,
};
// 使用 Map 构造函数
Map<String, int> scores = Map();
scores['Alice'] = 90;
scores['Bob'] = 85;
print("Alice's age: ${ages['Alice']}"); // 输出: Alice's age: 25
2. 访问和修改 Map
可以通过键来访问或修改 Map 中的值。
示例代码
dart
Map<String, int> ages = {'Alice': 25, 'Bob': 30, 'Charlie': 35};
// 访问值
aspcms.cnprint("Bob's age: ${ages['Bob']}"); // 输出: Bob's age: 30
// 修改值
ages['Alice'] = 26;
print("Alice's updated age: ${ages['Alice']}"); // 输出: Alice's updated age: 26
// 添加新键值对
ages['David'] = 40;
print("David's age: ${ages['David']}"); // 输出: David's age: 40
3. 遍历 Map
可以使用 forEach、for-in 循环或其他迭代方法遍历 Map。
示例代码
dart
Map<String, int> ages = {'Alice': 25, 'Bob': 30, 'Charlie': 35};
// 使用 forEach 遍历
ages.forEach((name, age) {
print("$name is $age years old");
});
// 使用 for-in 遍历键值对
for (var entry in ages.entries) {
print("Key: ${entry.key}, Value: ${entry.value}");
}
输出
Alice is 25 years old
Bob is 30 years old
Charlie is 35 years old
Key: Alice, Value: 25
Key: Bob, Value: 30
Key: Charlie, Value: 35
4. 检查键是否存在
可以使用 containsKey 方法检查键是否存在于 Map 中。
示例代码
dart
Map<String, int> ages = {'Alice': 25, 'Bob': 30, 'Charlie': 35};
if (ages.containsKey('Alice')) {
print("Alice exists in the map");
} else {
print("Alice does not exist in the map");
}
输出
Alice exists in the map
5. 删除键值对
可以使用 remove 方法从 Map 中删除键值对。
示例代码
dart
Map<String, int> ages = {'Alice': 25, 'Bob': 30, 'Charlie': 35};
// 删除键值对
ages.remove('Bob');
print("After removal: $ages"); // 输出: After removal: {Alice: 25, Char