TreeMap TreeSet HashMap HashSet笔记
2017-03-27 17:31
435 查看
TreeMap与TreeSet
TreeMap底层数据结构是red-black tree,节点是一个Entry对象字段为:
K key; V value; Entry<K,V> left = null; Entry<K,V> right = null; Entry<K,V> parent; boolean color = BLACK;
红黑树的排列是依据key
put() remove() containsKey()方法的效率都是对数级的
注:values()方法的效率是O(n),因为red-black tree是按键排序的,不是按值
TreeSet底层就是一个TreeMap,不过是key和value相等而已
HashMap和HashSet
映射:散列表本质就是把key映射成索引Hash算法:把key映射城索引的算法就是hash算法,hash算法的好坏决定了索引冲突产生的几率,HashMap的hash方法如下:
final int hash(Object k) { //一个随机值 int h = hashSeed; if (0 != h && k instanceof String) { //如果是key是String类型,就调用该方法 return sun.misc.Hashing.stringHash32((String)k); } //如果是其他类型就调用key本身的hashCode()方法 h ^= k.hashCode(); // This function ensures that hashCodesthat differ only by // constant multiples at each bit positionhave a bounded // number of collisions (approximately 8 atdefault load factor). h ^= (h >>> 20) ^ (h>>> 12); return h ^ (h >>> 7) ^ (h >>> 4); }
索引冲突:HashMap处理索引冲突的方法是链式散列,即在Entry中第一一个next的Entry引用,如果有重复的键,就指向重复的Entry,HashMap中Entry字段属性如下:
final K key; V value; Entry<K,V> next; int hash;
Put() remove() containKey()方法的效率都是常数,containValue()为O(n)(道理同上)
HashSet的底层就是一个HashMap,同样也只是key和value一样而已
相关文章推荐
- java中Collection/Collections;List/Set/Map;ArrayList/Vector/LinkedList;HashSet/HashMap/TreeSet/TreeMap
- Java集合中的ArrayList LinkedList HashSet TreeSet HashMap TreeMap 的区别
- HashSet TreeSet LinkedList ArrayList Hashmap Treemap的一些区别
- Collect Set List HashSet ArrayList LinkedList TreeSet Map HashMap TreeMap
- java 集合学习笔记3-HashSet TreeSet
- JANA-11.1-Set、HashSet与TreeSet;Map、HashMap与TreeMap讲解
- Java笔记(8)-泛型、链表、LinkedList<E>、Iterator迭代器、Collections类方法、堆栈、HashMap<K,V>、TreeSet<E>、自动装箱和拆箱
- Java集合框架初步(hashset treeset list hashmap)
- 黑马程序员_学习笔记:10) 集合框架2:Set(HashSet、TreeSet)、Map(Hashtable、HashMap、TreeMap)、Collections、Arrays
- hashmap和treemap、hashset和treeset、linkedhashmap
- JDK源码学习笔记——HashSet LinkedHashSet TreeSet
- java.util(一)HashMap TreeMap TreeSet
- Java笔记之HashSet与TreeSet集合的运用
- HashSet和TreeSet,HashMap和TreeMap
- List.HashMap.TreeMap.HashSet,TreeSet以及集合排序
- 集合类的学习--HashSet vs TreeSet
- 剖析HASHMAP/HASHSET
- HashSet HashTable HashMap的区别
- hashset hashmap hashtable arraylist vector 区别
- My_Java之笔记(8)- 实现TreeSet集合的排序方法