集合(二)Map

    在我们的生活当中有很多时候需要成对存储数据,比如学生姓名和学号,或者一个帐号绑定的手机号,这些都是成对存储的关系。因此,我们引入Map的使用。

    Map就是用来存储“键(Key)-值(value)对”的,Map类中存储的“键值对”通过键来标识,所以“键对象”不能重复。

    Map 接口的实现类有HashMap、TreeMap、HashTable、Properties等。常用的方法如下图:

entrySet()方法://对Map中的key-value这个键值对进行遍历:Map中的内部接口:Entry
Set<Entry<Integer, String>> entrySet = m.entrySet();
for(Entry<Integer, String> en:entrySet){
System.out.println(en.getKey()+"-----"+en.getValue());
}

keySet() 方法://对Map中的key进行遍历:
Set<Integer> keySet = m.keySet();
for(Integer i:keySet){
 
System.out.println(i+"====="+m.get(i));
}

 values()方法://对Map中的value进行遍历:
Collection<String> values = m.values();
for(String s:values){
System.out.println(s);

}

     HashMap采用哈希算法实现,是Map接口最常用的实现类。 由于底层采用了哈希表存储数据,我们要求键不能重复,如果发生重复,新的键值对会替换旧的键值对。 HashMap在查找、删除、修改方面都有非常高的效率。

HashTable类和HashMap用法几乎一样,底层实现几乎一样,只不过HashTable的方法添加了synchronized关键字确保线程同步检查,效率较低。

HashMap与Hashtable的区别

      1. HashMap: 线程不安全,效率高。允许key或value为null。JDK1.2

      2. Hashtable: 线程安全,效率低。不允许key或value为null。JDK1.0


注意:HashSet使用了HashMap的原理。如果想让输出和输入顺序一样创建LinkedeHashMap();对象。

    TreeMap:TreeMap和HashMap实现了同样的接口Map,因此,用法对于调用者来说没有区别。HashMap效率高于TreeMap;在需要排序的Map时才选用TreeMap。





猜你喜欢

转载自blog.csdn.net/qq_15273599/article/details/80060160