8. Map 接口

8. Map  接口

1.1 特征
是一组成对的键-值对象,即所持有的是key-value 对。Map中不能有重复的key,拥有自己的内部排列机制
1.2 方法
void clear()
boolean containsKey(Object  k)
boolean containsValue(Object v)
Set entrySet()
boolean equals(Object obj)
Object get(Object k)
int hashCode()
boolean isEmpty()
Set keySet()
Object put(Object k, Object v)
void putAll(Map m)
Object remove(Object k)
int size()
Collection values()
1.3 Map  实现类
HashMap 以哈希表数据结构实现,查找对象时通过哈希函数计算其位置,它是为快速查询而设计的,其内部定义了一个hash表数组(Entry[] table),元素会通过哈希转换函数将元素的哈希地址转换成数组中存放的索引,如果有冲突,则使用散列链表的形式将所有相同哈希地址的元素串起来,可能通过查看HashMap.Entry的源码它是一个单链表结构。
TreeMap 键以某种排序规则排序,内部以red-black(红-黑)树数据结构实现,实现了SortedMap接口
Hashtable 也是以哈希表数据结构实现的,解决冲突时与HashMap也一样也是采用了散列链表的形式,不过性能比HashMap要低。

1.4 对map的选择
1)Hashtable和HashMap的效率大致相同(通常HashMap更快一点,所以HashMap有意取代Hashtable)。
2)TreeMap通常比HashMap慢,因为要维护排序。
3)HashMap正是为快速查询而设计的。
4)LinkedHashMap比HashMap慢一点,因为它维护散列数据结构的同时还要维护链表。
1.5 实例
public class Test {
    public static void main(String[] args) {
        test2();
    }
    
    static void test1(){
        HashMap<String,String> hm = new HashMap<String,String>();
        hm.put("1", "Android");
        hm.put("2","iOS");
        hm.put("3", "WP");
        hm.put("4", "WP");
        String v1 = hm.get("1");
        System.out.println(v1);
        
        Set<String> keys = hm.keySet();
        for(String key : keys){
            String value = hm.get(key);
            System.out.println(key+":"+value);
        }
    }
    
    static void test2(){
        TreeMap<String,String> tm = new TreeMap<String,String>();
        tm.put("3", "WP");
        tm.put("4", "WP");
        tm.put("1", "Android");
        tm.put("2","iOS");
        System.out.println(tm);
    }
}

原文出处:http://geek99.com/node/452#

该博客教程视频地址:http://geek99.com/node/1648

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章