A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


Map集合没有继承Collection接口,其提供的是key到value的映射。Map中不能包含相同的key只能映射一个value。Key还决定了存储对象在映射中的存储位置,但是鄙视由Key对象本身决定的,而是通过一种“散列技术”进行处理,产生一个散列码的整数值,散列码通常用作一个偏移量,该偏移量对应分配给映射内部区域的起始位置,从而确定存储对象在映射中的存储位置。Map集合包括Map接口以及Map接口的所有实现类。

Map接口常用的实现类有HashMap和TreeMap。建议使用HashMap类实现Map集合,由于HashMap类实现Map集和的Map集合添加和删除映射关系效率更高。HashMap是基于哈希表的Map接口的实现,HashMap通过哈希码对其内部的映射关系进行快速查找;而TreeMap中映射关系存在一定的=顺序,如果希望Map集合的对象也存在一定的顺序,应使用TreeMap类实现Map集合。

HashMap类是基于哈希表的Map接口实现,此实现提供多有可选的映射操作,并允许使用快速查找。此类不保证映射顺序,特别是他不保证该顺序恒久不变。

TreeMap类不仅实现了Map接口,还是实现了java.util.SortedMap几口,因此,集合中的映射关系具有一定的顺序。但在添加、删除和定位映射关系时,TreeMap比HashMap性能稍差。

由于TreeMap类实现Map集合中的映射关系是根据对象按照一定顺序排列的,因此不允许键对象是Null.

以下是课堂有关代码的笔记:

(1)Map集合:该集合存储键值对,要保证键的唯一性

   1,添加。

      put(K key,v value)

      putAl1(Map<? extends K,? extends V>m)

   2.删除

      clear()

      remove(Object key)

   3,判断

      containsValue(Object value)

      containsKey(Object key)

      isEmpty()

   4,获取

      get(Object key)

      size()

      values()

      entrySet()

      keySet()

Map

   Hashtable:底层是哈希表数据结构,不可以存入Null作为键,作为值存在。该集合是线程同步的。

   HashMap:底层是哈希表数据结构,可以存入Null作为键,作为值存在。该集合不是线程同步的。

   TreeMap:底层是二叉树数据结构,线程不同步,可以用于给map集合中的键进行排序。

          和Set很像,Set集合底部使用map集合。

import java.util.*;

class MapDemo{

   public static void main(String[] args) {

      Map<String,String> map=new HashMap<String,String>();

      //当添加元素的时候,如果出现添加相同的键时,那么后添加的值会覆盖原来对应键的值,用put方法会返回被覆盖的值。

      System.out.println("put:"+map.put("04","lisi"));

      System.out.println("put:"+map.put("04","wangwu"));

      System.out.println("put:"+map.put("04","zhangsan"));

      //添加元素

      map.put("01","ZhangSan1");

      map.put("02","ZhangSan2");

      map.put("03","ZhangSan3");

      System.out.println("containsKey:"+map.containsKey("022"));


      System.out.println("get:"+map.get("02"));


      map.put("04",null);

      System.out.println("get:"+map.get("04"));

      //可以通过Get方法的返回值来判断一个键是否存在,通过返回Null来判断

      Collection<String> coll=map.values();

      System.out.println(coll);

   }}

(2)map集合的两种取出方式:

1,返回值set<k> keySet:将map中所有的键存入set集合,因为set具备迭代器,所以可以用迭代的方法取出所有的键,根据get方法。获取每                    一个键对应的值。Map集合的取出原理:将map集合转换成set集合,通过迭代器取出。     

2,返回值Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到set集合中,而这个关系的数据类型就是:MapEntryimport java.util.*;

class MapDemo2{

      public static void main(String[] args) {

      Map<String,String> map=new HashMap<String,String>();

      map.put("01","zhangsan1");

      map.put("02","zhangsan2");

      map.put("03","zhangsan3");

      map.put("04","zhangsan4");

      //将Map集合中的映射关系取出来。存入到set集合中

      Set<Map.Entry<String,String>> entrySet=map.entrySet();

      Iterator<Map.Entry<String,String>> it=entrySet.iterator();

      while(it.hasNext()) {

          Map.Entry<String,String> me=it.next();

          String key=me.getKey();

          String value=me.getValue();

          System.out.println(key+"......"+value); }}}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马