Scala如何实现HashMap数据结构?
我最近迷上了函数式编程,我真的很喜欢Scala。出于好奇,我决定开始实现自己的数据结构。我从一个SingleLinkedList开始,在这里我区分了两个case类:caseScala如何实现HashMap数据结构?,scala,data-structures,functional-programming,hashmap,Scala,Data Structures,Functional Programming,Hashmap,我最近迷上了函数式编程,我真的很喜欢Scala。出于好奇,我决定开始实现自己的数据结构。我从一个SingleLinkedList开始,在这里我区分了两个case类:caseEmpty和caseCons(head,tail)。我想知道是否有人能告诉我如何实现HashMap?提前感谢您的帮助:)哈希映射[K,V]应该包含哈希向量,类似于向量[List[V]]。和hash函数。试着实现这个特性 提示:尝试使用不可变的数据结构执行此操作 数据结构说明: HashMap类似于HashTable,它包含一个
Empty
和caseCons(head,tail)
。我想知道是否有人能告诉我如何实现HashMap?提前感谢您的帮助:)哈希映射[K,V]
应该包含哈希向量,类似于向量[List[V]]
。和hash
函数。试着实现这个特性
提示:尝试使用不可变的数据结构执行此操作
数据结构说明:
HashMap类似于HashTable,它包含一个数组,该数组链接到具有相同hash(key)
值的chains元素
您还可以定义一些有用的构造函数:
object HashMap {
def empty[K, V]: HashMap[K, V] = ???
def fromSeqPairs[K, V](seq: Seq[(K, V)]): HashMap[K, V] = ???
def filled[K, V](seq: Seq[K], defaultValue: V): HashMap[K, V] = ???
}
HashMap[K,V]
应该包含hash向量,类似于vector[List[V]]
。和hash
函数。试着实现这个特性
提示:尝试使用不可变的数据结构执行此操作
数据结构说明:
HashMap类似于HashTable,它包含一个数组,该数组链接到具有相同hash(key)
值的chains元素
您还可以定义一些有用的构造函数:
object HashMap {
def empty[K, V]: HashMap[K, V] = ???
def fromSeqPairs[K, V](seq: Seq[(K, V)]): HashMap[K, V] = ???
def filled[K, V](seq: Seq[K], defaultValue: V): HashMap[K, V] = ???
}
我想你是说不可变的HashMap?然后你可以看看 在HashMap中,您假设如果对象相等,则它们具有相同的哈希值,如果它们具有不同的哈希值,则它们不相等。因此,您可以做的是:
- 创建一个trie,其中从根到叶的路径是密钥的散列
- 在节点中,有例如对列表(键->值)
- 然后查找键值对就是遍历trie,然后遍历列表
或者只是看看。它甚至引用了。我想你指的是不可变的HashMap?然后你可以看看 在HashMap中,您假设如果对象相等,则它们具有相同的哈希值,如果它们具有不同的哈希值,则它们不相等。因此,您可以做的是:
- 创建一个trie,其中从根到叶的路径是密钥的散列
- 在节点中,有例如对列表(键->值)
- 然后查找键值对就是遍历trie,然后遍历列表
或者只是看看。它甚至引用了。trie的一个好特性是,您可以使用它创建各种持久性数据结构,它们类似于命令式数据结构,尽管它们是不可变的。是的,它们不仅用于映射,还用于不可变向量。trie的优良特性是,您可以使用它创建各种持久数据结构,它们类似于命令式数据结构,尽管它们是不可变的。是的,它们不仅用于映射,也用于不可变向量。我碰巧有一个关于persisten数据结构的实现(主要是Clojure,但是Scala从那里的思想中复制了很多)。我碰巧有一个关于persisten数据结构的实现(主要是Clojure,但是Scala从那里的思想中复制了很多)。