Map集合 16.07.31 Java基础

Map集合

      上文我们讲了java中的Queue集合,今天我们来讲讲java.util包中更为常见的集合类Map集合。
       Map集合中包含的是元素对(即键(“key”)和值(values)),它们可以使任何引用类型的数据,其中,Map的key值是不可重复的,因为该类重写了equals方法,使得该方法返回值总为false。
       Key和value是一一对应的关系,即通过指定的key,总能找到唯一的value对象。Map里的key放在一起可以看成一个Set集合,实际上Map中包含了一个keySet()方法,用于返回Map里所有key组成的Set集合。
        Map中的所有value放在一起可以看成一个list集合,元素与元素之间可以重复,每个元素可以根据索引来查找。只是Map中的索引不再使用整数值,而是以另外一个对象作为索引。如果需要从Map中取出元素,则需要提供该元素的key索引。

方法区:

Map方法

HashMap和Hashtable实现类

区别:
1、Hashtable是一个线程安全的Map实现,但HashMap是线程不安全。所以HashMap比Hashtable性能更高一点。
2、Hashtable不允许使用null作为key和value,而HashMap则可以。
样例:
public class MapDemo {
public static void main(String[] args) {
Map map=new HashMap();
map.put(null, null);
System.out.println(map.size());
Map map1=new Hashtable();
map1.put(null, null);
System.out.println(map1.size());
}
}

运行结果:
1
Exception in thread “main” java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:394)
at collection.MapDemo.main(MapDemo.java:13)
      分析:Hashmap正常运行,而Hashtable则报NullPointerException(空指针异常)的错误,说明Hashtable并不能存放null值。
      注意 :尽量不要使用可变对象作为HashMap的key,如果使用了可变对象作为了map的key,则在程序中尽量不要去修改变量。
       样例:public static void main(String[] args) {
String Str="123";
Map map =new HashMap();
map.put(Str, "lisi");
Str="abc";
System.out.println(map.get(Str));
System.out.println(map.get("123"));
}
}

      分析:因为刚开始调用put方法的时候存放的值是堆内存中变量的值,这时已经固定是上面代码中的“123”这个值,如果再更改变量的话,该变量的值变为“abc”,所以输出的时候返回null,因为Str中的值已经不是存放时的值了。

LinkedHashMap实现类

   LinkedHashMap是HashMap的子类,同LinkedHashSet一样,LinkedHashMap在存储数据元素时同样使用了链表来维护key-value对的存放顺序,该链表负责维护Map的迭代顺序,迭代顺序与key-value对的插入顺序保持一致。
      Map集合还包含许多知识,具体请接下文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值