标签:
双列集合:
在现实生活中有些数据是以映射关系存在的,也就是成对存在的,比如夫妻等。单例集合无法表现出映射关系,所以学习双列集合。
双列集合无迭代器。
1.Map
双列集合:
————————| Map 如果是实现了Map类接口的集合类,具备的特点:存储的数据都是以键值对的形式存在的,键不可重复,值可以重复。
————————————| Hashmap 底层也是基于哈希表实现的。
————————————| Treemap
————————————| Hashtable
1-1 HashMap
基于哈希表的Map接口的实现。
HashMap的存储原理:
往HashMap添加元素的时候,首先会调用hashcode方法得到元素的哈希吗值,然后经过运算就可以算出该元素在哈希表中的存储位置。
情况一:如果算出的目前为止没有任何元素存储,那么该元素可以直接添加到哈希表中。
情况二:如果算出的位置目前已经存在其他的元素,那么还会调用该元素的equals方法与这个位置上的元素进行比较,如果equals返回的是false,那么该元素允许被存储,如果equals方法返回的是true,那么该元素被视为重复元素,不允许存储。
迭代
方式一 keyset
方式二:values
方式三:entrySet
HashMap的存储原理
1-2 TreeMap
TreeMap也是基于红黑树(二叉树)数据结构实现的,特点:会对元素的键进行排序存储。
TreeMap要注意的事项:
1.往TreeMap添加元素的时候,如果元素的键具备自然顺序,那么就会按照键的自然顺序特性进行排序存储。
2.往TreeMap添加元素的时候,如果元素的键不具有自然顺序,那么键所属的类必须要实现Comparable接口,把键的比较规则定义在CompareTo方法上。
3.往TreeMap添加元素的时候,如果元素的键本身不具有自然顺序,而且键所属的类也没有实现Comparable接口,那么就必须在创建TreeMap对象的时候创建比较器。
标签:
原文地址:http://www.cnblogs.com/insistence/p/5866776.html