This commit is contained in:
krahets
2024-04-11 17:17:43 +08:00
parent 739f8a31bb
commit bfd0b3598d
7 changed files with 34 additions and 285 deletions

View File

@ -1587,77 +1587,6 @@ index = hash(key) % capacity
var _val: String
)
/* 基於陣列實現的雜湊表 */
class ArrayHashMap {
// 初始化陣列,包含 100 個桶
private val buckets = arrayOfNulls<Pair>(100)
/* 雜湊函式 */
fun hashFunc(key: Int): Int {
val index = key % 100
return index
}
/* 查詢操作 */
fun get(key: Int): String? {
val index = hashFunc(key)
val pair = buckets[index] ?: return null
return pair._val
}
/* 新增操作 */
fun put(key: Int, _val: String) {
val pair = Pair(key, _val)
val index = hashFunc(key)
buckets[index] = pair
}
/* 刪除操作 */
fun remove(key: Int) {
val index = hashFunc(key)
// 置為 null ,代表刪除
buckets[index] = null
}
/* 獲取所有鍵值對 */
fun pairSet(): MutableList<Pair> {
val pairSet = mutableListOf<Pair>()
for (pair in buckets) {
if (pair != null)
pairSet.add(pair)
}
return pairSet
}
/* 獲取所有鍵 */
fun keySet(): MutableList<Int> {
val keySet = mutableListOf<Int>()
for (pair in buckets) {
if (pair != null)
keySet.add(pair.key)
}
return keySet
}
/* 獲取所有值 */
fun valueSet(): MutableList<String> {
val valueSet = mutableListOf<String>()
for (pair in buckets) {
pair?.let { valueSet.add(it._val) }
}
return valueSet
}
/* 列印雜湊表 */
fun print() {
for (kv in pairSet()) {
val key = kv.key
val _val = kv._val
println("${key} -> ${_val}")
}
}
}
/* 基於陣列實現的雜湊表 */
class ArrayHashMap {
// 初始化陣列,包含 100 個桶