1.HashSet
1.HashSet底层采用的是HashMap实现储存,其值作为HashMap的key。
2.采用hash算法,通过计算hashcode,再跟数组长度-1进行位运算,得到下标,如果该位置没有其他元素,则直接存储,不用比较。如果有其他元素(hash冲突),进行比较(equals)。如果equals相同,则不插入,否则形成链表。
2.ArrayList和LinkedList细节注意点
1.按位置查找:
ArrayList更快,而按元素值查找,则需要遍历,半斤八两。
LinkedList如果插入到末尾,有一个last指针直接指向末尾,而不需要遍历到末尾。
2.ArrayList初始默认容量为10,所以初始最好设置大小够用,否则扩容(1.5倍)需要数据迁移(旧数据复制到新数组)