Skip to content

Latest commit

 

History

History
24 lines (19 loc) · 933 Bytes

Map_Set_Hash.md

File metadata and controls

24 lines (19 loc) · 933 Bytes

Data Structure Review

Map/Set/Hash

Set: 没有重复元素
Map: <key, value> pairs,不能存在重复的key,每个key可以map到一个value

HashMap/HashSet是利用HashTable实现的Set和Map,但是java不再使用HashTable。
HashMap Implementation

解决冲突有两种办法,java采取的是separate chaining,每个index后面指向的都是一条linked list。

// HashMap API
get(key)
put(key, value)
remove()

// HashSet API
add()
remove()
contains()

HashCode()和equals()方法需要注意:
如果重写了equals(), 就要重新写HashCode(),因为hashcode默认是通过内存地址来计算的,但如果重写的equals,也就是说要比较两个value的内容是否也一样,如果内容一样,但是地址不同,计算出来的hashcode还是不一样,这样就会导致hashtable存入重复元素。