Map

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

 

 

Map 

Map:一次存入一对元素,以键值对(Key , V alue)形式存在,必须保证键的唯一性。

1,添加:

put(K key , V value):返回的是被覆盖的 Value,如果键没有重复,返回的是 null。

2,删除:

remove(key); 

clear(); 

3,获取:value  get(key); 

也可以用于判断键是否存在的情况。当指定的键不存在的时候,返回的是 null。

对于 HashMap 集合,可以存入 null 键 null 值。

hm.put("haha",null); 

hm.get("haha");==>null.//要注意一下。

4,判断:

booleancontainsKey(key); 

booleancontainsValue(value); 

boolean isEmpty(); 

5,长度:int    size(); 

6,取出:原理:将 map 合转成 Set 合后,在通过迭代器取出。

Set<k> keySet():将 map 合中所有的键取出存入 set 集合。 再通过 get 方法获取键

对应的值。

Set<Map.Entry<k,v>>  entrySet():将 map 集合中的键值映射关系打包成一个对象

Map.Entry 对象。 

将该对象存入 set 集合。取出是可以通过 Map.Entry 对象的 getKey,getValue 获取

其键和值。

7,获取所有的值。

Collection<v> values(); 

Map:

|- -Hashtable:底层是哈希表数据结构, 线程是同步的, 不可以存入 null 键, null 值。

效率较低,被 HashMap 替代。

|--HashMap:底层是哈希表数据结构, 线程是不同步的, 可以存入 null 键, null 值。

要保证键的唯一性,需要覆盖 hashCode 方法,和 equals 方法。

|--LinkedHashSet:该子类基于哈希表又融入了链表。 可以 Map 集合进增

删提高效率。

|--T reeMap:底层是二叉树数据结构。可以对 map 集合中的键进行排序。

需要使用 Comparable 或者 Comparator 进行比较排序。return0,来判断

键的唯一性。

其实 set 合,底层使用的就是 map 集合。

Map 集合中有一个特殊的对象是可以和 IO 对象相结合的:Properties。它是 Hashtable

的子类。

该集合对象不存在泛型,键和值都是字符串。

 

什么时候使用 map 合?当对象之间存在着映射关系时,就要先想到 map 合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值