Add the codes of hashmap (#553)

of chaining and open addressing
This commit is contained in:
Yudong Jin
2023-06-14 02:01:06 +08:00
committed by GitHub
parent d3e597af94
commit 9563965a20
27 changed files with 1280 additions and 207 deletions

View File

@ -4,8 +4,8 @@
* Author: nuomi1 (nuomi1@qq.com)
*/
/* int->String */
class Entry {
/* */
class Pair {
var key: Int
var val: String
@ -17,7 +17,7 @@ class Entry {
/* */
class ArrayHashMap {
private var buckets: [Entry?] = []
private var buckets: [Pair?] = []
init() {
// 100
@ -41,7 +41,7 @@ class ArrayHashMap {
/* */
func put(key: Int, val: String) {
let pair = Entry(key: key, val: val)
let pair = Pair(key: key, val: val)
let index = hashFunc(key: key)
buckets[index] = pair
}
@ -54,14 +54,14 @@ class ArrayHashMap {
}
/* */
func entrySet() -> [Entry] {
var entrySet: [Entry] = []
func pairSet() -> [Pair] {
var pairSet: [Pair] = []
for pair in buckets {
if let pair = pair {
entrySet.append(pair)
pairSet.append(pair)
}
}
return entrySet
return pairSet
}
/* */
@ -88,8 +88,8 @@ class ArrayHashMap {
/* */
func print() {
for entry in entrySet() {
Swift.print("\(entry.key) -> \(entry.val)")
for pair in pairSet() {
Swift.print("\(pair.key) -> \(pair.val)")
}
}
}
@ -124,8 +124,8 @@ enum _ArrayHashMap {
/* */
print("\n遍历键值对 Key->Value")
for entry in map.entrySet() {
print("\(entry.key) -> \(entry.val)")
for pair in map.pairSet() {
print("\(pair.key) -> \(pair.val)")
}
print("\n单独遍历键 Key")
for key in map.keySet() {