1、Hash 类集合,在存储时 会存以hash 值为数组下标的数组
hash | |
11 | AA,BB |
22 | CC |
这样contains 时 只用判断 数组对应位置是否有值,没有直接返回,有的话再用equals 判断内容是否相等。
所以 contains 的效率是o(1) 的,需要注意的是HashMap 对value 的查找是o(n) 的。
HashSet底层其实就是研究HashMap底层的结构,1.8以前是链表,1.8改为了 当阈值大于一定数量时,底层结构变为红黑树结构
Hashmap 详细原理http://www.cnblogs.com/java-jun-world2099/p/9258605.html
2.tree 类
使用二叉树查找