hashmap hashtable treemap

Map接口

Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射,Map中的key不要求有序,不允许重复。value同样不要求有序,但可以重复 。

Entry =Key-Value (键值对)

Map接口中键和值一一映射. 可以通过键来获取值

1.Map集合里保存着两组值:

           一组用于保存Map里的key

           一组用于保存Map里的value

2.key和value可是任何引用类型的数据,key和value都可以为null

3.key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false

4.key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的、确定的value

5.所有的key放在一起来看,它们就组成了一个Set集合(无序、不重复),Map提供了一个keySet()方法用于返回Map所有key组成的Set集合

Map中包括一个内部类:Entry

Entry类封装了一个key-value对象,Entry包含三个方法

我们可以把Map理解成一个特殊的Set,只该Set里包含的集合元素是Entry对象,而不是普通的对象,在Map集合中使用 entrySet方法返回一个Entry对象集合

Hashhap

HashMap实现了Map接口,继承AbstractMap,它是基于哈希表的 Map 接口的实现(保证键的唯一性),

以key-value的形式存在


初始容量:表示哈希表中桶的数量,初始容量是创建哈希表时的容量,就是集合的容量

加载因子:哈希表在其容量自动增加之前可以达到多满的一种尺度,它衡量的是一个散列表的空间的使用程度,负载因子越大表示散列表的装填程度越高,反之愈小。

 HashMap

HashMap是引用数据类型

通过 new 关键字在 Heap 堆中申请空间

保存其中元素的空间,按照hash码,预设好一个个的空间

这个空间就是 HashBucket(哈希桶)

每个桶有自己的Hash编号


例子:

public staticvoid main(String args[]){ 

        Map<String,String> maps = newHashMap<String,String>();

        maps.put("A", "苏州");

        maps.put("B", "南京");

        maps.put("C", "无锡");

        for(Map.Entry<String, String>entry:maps.entrySet()){

             System.out.println(entry.getKey()+"=====>"+entry.getValue());

        }

    }

Map集合的遍历:

      1、通过内部类Entry进行遍历

      2、通过迭代器进行遍历,先获得Entry的Set集合

      3、通过keySet方法获得键的Set集合,通过遍历键取值

      4、通过map.values()获得所有值,但是不能获得键

Hashtable:是Map接口的另外一个实现类,和HashMap用法类似,亦有区别

Ø  Hashtable出现于JDK1.0,HashTable基于Dictionary类(建议学生课下研究Dictionary,扩大知识面)

Ø  HashMap可以允许存在一个为null的key和任意个为null的value,但是HashTable中的key和value都不允许为null

Ø  Hashtable的方法是同步的,而HashMap的方法不是

  public static void main(String args[]){ 

   Hashtable<String,Object> table = new Hashtable<String, Object>();  

         //添加元素 

         table.put("A", "中国"); 

          table.put("B", "美国"); 

        table.put("C", "俄罗斯"); 

       for(Map.Entry<String,Object> entry:table.entrySet()){

    System.out.println(entry.getKey()+"------------->"+entry.getValue());

        }           

       System.out.println("===================================="); 

         //通过Enumeration来遍历Hashtable 

         Enumeration<String> enu =table.keys(); 

        while(enu.hasMoreElements()){ 

          String key =enu.nextElement();

              System.out.println("Enumeration:"+table.keys()+"===>"+key+"====>"+table.get(key)); 

       }  }

Ø  TreeMap 是一个有序的key-value集合,它是通过红黑树实现的

Ø  TreeMap 继承于AbstractMap,所以它是一个Map,即一个key-value集合

Ø  TreeMap 实现了NavigableMap接口,意味着它支持一系列的导航方法,比如返回有序的key集合

Ø  TreeMap 实现了Cloneable接口,意味着它能被克隆

Ø  TreeMap 实现了Java.io.Serializable接口,意味着它支持序列化




猜你喜欢

转载自blog.csdn.net/qq_15007327/article/details/76278010