Private
_k_键名前缀
公钥总数
公钥
将键值对添加到哈希表中。
该方法接受两个参数:key
和 value
,分别表示要添加到哈希表中的键和与之相关联的值。它返回更新后的 HashTable
实例。
该方法首先检查 key
是否为字符串类型且不包含指定的前缀。如果是这样,它会在 key
的前面添加前缀 "key_
",以确保所有键都具有相同的格式。然后,它检查哈希表中是否已经存在该键。如果是这样,它直接返回当前哈希表实例。否则,它将键值对添加到哈希表中,并更新计数器。添加了类型定义注释后,可以更清晰地看到这一过程,并帮助其他开发人员理解如何正确使用此方法。
// 创建一个新的 HashTable 实例,并向其中添加一些键值对。
const myTable = new HashTable<string, number>();
myTable.add('apple', 5);
myTable.add('banana', 3);
myTable.add('cherry', 9);
// 尝试向哈希表中添加已存在的键值对。
myTable.add('apple', 4); // 返回原始实例 myTable
// 向哈希表中添加新的键值对。
myTable.add('grape', 7);
// 获取新添加键值对后的哈希表大小。
const newTableSize = myTable.size(); // 返回 4
要添加到哈希表中的键。
与键关联的值。
更新后的哈希表实例。
清空哈希表中的所有键值对。
该方法不接受任何参数,它会将哈希表中的所有键值对清除。具体来说,它将计数器设置为零,并创建一个新的空对象以替换当前 keys
对象。这将导致所有之前存在的键都被删除,并且哈希表现在为空。由于该方法没有返回值,因此添加类型定义注释并不是必需的,但它可以帮助其他开发人员理解该方法的行为。
// 创建一个新的 HashTable 实例,并向其中添加一些键值对。
const myTable = new HashTable<string, number>();
myTable.add('apple', 5);
myTable.add('banana', 3);
myTable.add('cherry', 9);
// 清空哈希表。
myTable.clear();
// 获取清空后的哈希表大小。
const clearedTableSize = myTable.size(); // 返回 0
创建当前哈希表的一个副本。
该方法不接受任何参数。它返回一个与当前哈希表具有相同键值对的新 HashTable
实例。
该方法首先将当前哈希表的 keys
属性赋值给一个变量 _keys
。然后,它创建一个新的 HashTable
实例 ret
。接下来,它遍历 _keys
中的所有键值对,并使用 add()
方法将它们添加到新的哈希表实例 ret
中。由于哈希表是基于引用的数据结构,因此在这种情况下,必须创建一个新的 HashTable
实例,而不能仅复制 this.keys
属性。最后,它返回新的哈希表实例 ret
。添加了类型定义注释后,可以更清晰地看到这一过程,并帮助其他开发人员理解如何正确使用此方法。
// 创建一个新的 HashTable 实例,并向其中添加一些键值对。
const myTable = new HashTable<string, number>();
myTable.add('apple', 5);
myTable.add('banana', 3);
myTable.add('cherry', 9);
// 克隆哈希表。
const clonedTable = myTable.clone();
// 获取克隆后的哈希表大小。
const clonedTableSize = clonedTable.size(); // 返回 3
哈希表的副本。
检查哈希表中是否包含指定的键。
方法的主要作用是检查哈希表中是否包含指定的键。根据传入的参数类型 K
,如果是字符串类型且不以 _k_
开头,则将其转换成带有 _k_
前缀的字符串类型。然后,使用 JavaScript 内置方法 Object.prototype.hasOwnProperty
检查键是否存在于哈希表中。如果存在,则返回 true
,否则返回 false
。这个方法在哈希表的查询操作中非常重要,可以帮助我们快速地判断一个键是否存在于哈希表中,从而实现 O(1)
的时间复杂度。
// 创建一个新的 HashTable 实例,并向其中添加一些键值对。
const myTable = new HashTable<string, number>();
myTable.add('apple', 5);
myTable.add('banana', 3);
myTable.add('cherry', 9);
// 检查哈希表中是否包含指定的键。
const hasBanana = myTable.contains('banana'); // 返回 true
const hasGrape = myTable.contains('grape'); // 返回 false
要查找的键。
如果哈希表包含该键,则返回 true
,否则返回 false
。
返回去除任何前缀后的键值。
该方法接受一个泛型参数 K
,并返回同样类型的值。它的作用是从输入键中提取对应的值,并去除任何可能存在的前缀。该方法首先检查 key
是否为字符串类型且以 _k_
开头。如果是,则通过移除前四个字符来提取值,并将其转换回类型 K
。否则,它会直接返回原始的 key
值。添加了类型定义注释后,可以更清晰地看到这一过程,并帮助其他开发人员理解如何正确使用此方法。
// 创建一个新的 HashTable 实例,并向其中添加一些键值对。
const myTable = new HashTable<string, number>();
myTable.add('apple', 5);
myTable.add('banana', 3);
myTable.add('cherry', 9);
// 获取指定键的实际值(去掉前缀)。
const actualKey1 = myTable.getkey('key_apple'); // 返回 "apple"
const actualKey2 = myTable.getkey('banana'); // 返回 "banana"
要从中提取值的输入键。
不带前缀的键值,或不包含前缀的原始键。
返回与指定键相关联的值,或 undefined 如果键不存在。
该方法接受一个参数 key
,表示要获取其关联的值的键。它返回与该键相关联的值或 undefined
。
该方法首先检查 key
是否为字符串类型且不包含指定的前缀。如果是这样,它会在 key
的前面添加前缀 "key_
",以确保所有键都具有相同的格式。然后,它将使用 key
作为索引来访问哈希表,并返回相应的值。如果哈希表中不存在该键,则返回 undefined
。添加了类型定义注释后,可以更清晰地看到这一过程,并帮助其他开发人员理解如何正确使用此方法。
// 创建一个新的 HashTable 实例,并向其中添加一些键值对。
const myTable = new HashTable<string, number>();
myTable.add('apple', 5);
myTable.add('banana', 3);
myTable.add('cherry', 9);
// 获取指定键的值。
const appleCount = myTable.getvalue('apple'); // 返回 5
const grapeCount = myTable.getvalue('grape'); // 返回 undefined
要返回值的键。
与键相关联的值,或 undefined 如果键不存在。
从哈希表中删除指定键及其关联的值。
该方法接受一个参数 key
,表示要从哈希表中删除的键。它返回更新后的 HashTable
实例。
该方法首先检查 key
是否为字符串类型且不包含指定的前缀。如果是这样,它会在 key
的前面添加前缀 "key_
",以确保所有键都具有相同的格式。然后,它检查哈希表中是否存在该键。如果是这样,它将计数器减一,并将该键对应的值设置为 undefined
。最后,它从哈希表中删除该键。添加了类型定义注释后,可以更清晰地看到这一过程,并帮助其他开发人员理解如何正确使用此方法。
// 创建一个新的 HashTable 实例,并向其中添加一些键值对。
const myTable = new HashTable<string, number>();
myTable.add('apple', 5);
myTable.add('banana', 3);
myTable.add('cherry', 9);
// 尝试从哈希表中删除不存在的键值对。
myTable.remove('grape'); // 返回原始实例 myTable
// 从哈希表中删除指定的键值对。
myTable.remove('banana');
// 获取新删除键值对后的哈希表大小。
const newTableSize = myTable.size(); // 返回 2
要删除的键。
更新后的哈希表实例。
替换指定键的值为新值。
该方法接受两个参数:key
和 newvalue
,分别表示要替换其值的键和要与之相关联的新值。它返回更新后的 HashTable
实例。
该方法首先检查 key
是否为字符串类型且不包含指定的前缀。如果是这样,它会在 key
的前面添加前缀 "key_
",以确保所有键都具有相同的格式。然后,它检查哈希表中是否存在该键。如果是这样,它将该键对应的值替换为新值。最后,它返回更新后的哈希表实例。添加了类型定义注释后,可以更清晰地看到这一过程,并帮助其他开发人员理解如何正确使用此方法。
// 创建一个新的 HashTable 实例,并向其中添加一些键值对。
const myTable = new HashTable<string, number>();
myTable.add('apple', 5);
myTable.add('banana', 3);
myTable.add('cherry', 9);
// 尝试替换哈希表中不存在的键值对。
myTable.replace('grape', 7); // 返回原始实例 myTable
// 替换哈希表中存在的键值对。
myTable.replace('banana', 6);
// 获取新替换键值对后的哈希表大小。
const newTableSize = myTable.size(); // 返回 3
要替换其值的键。
要与键相关联的新值。
更新后的哈希表实例。
从哈希表中安全删除指定键及其关联的值。
该方法接受一个参数 key
,表示要从哈希表中删除的键。它返回更新后的 HashTable
实例。
该方法首先检查 key
是否为字符串类型且不包含指定的前缀。如果是这样,它会在 key
的前面添加前缀 "key_
",以确保所有键都具有相同的格式。然后,它直接从哈希表中删除该键,并将计数器减一。与 remove()
方法不同的是,它不会将键对应的值设置为 undefined
。这意味着,如果再次访问该键,将返回 undefined
。添加了类型定义注释后,可以更清晰地看到这一过程,并帮助其他开发人员理解如何正确使用此方法。
// 创建一个新的 HashTable 实例,并向其中添加一些键值对。
const myTable = new HashTable<string, number>();
myTable.add('apple', 5);
myTable.add('banana', 3);
myTable.add('cherry', 9);
// 尝试从哈希表中安全删除不存在的键值对。
myTable.saferemove('grape'); // 返回原始实例 myTable
// 从哈希表中安全删除指定的键值对。
myTable.saferemove('banana');
// 获取新删除键值对后的哈希表大小。
const newTableSize = myTable.size(); // 返回 2
要删除的键。
更新后的哈希表实例。
返回哈希表中键值对的数量。
方法的作用是返回哈希表中键值对的数量。由于实现中已经使用了变量 count
来记录哈希表中键值对的数量,因此该方法只需要简单地返回 count
变量即可。在哈希表的操作中,我们通常需要了解哈希表中有多少键值对,因此这个方法非常重要。通过调用 size
方法,我们可以快速地获得当前哈希表中键值对的数量。
// 创建一个新的 HashTable 实例,并向其中添加一些键值对。
const myTable = new HashTable<string, number>();
myTable.add('apple', 5);
myTable.add('banana', 3);
myTable.add('cherry', 9);
// 获取哈希表中键值对的个数。
const tableSize = myTable.size(); // 返回 3
哈希表中键值对的数量。
Generated using TypeDoc
HashTable
是一个 JavaScript/TypeScript 的实现数据结构的哈希表(Hash Table)。哈希表是一种使用哈希函数将键映射到值的数据结构,它允许在平均情况下在 O(1) 时间内添加、删除和查找元素。Example