首页 > 学院 > 开发设计 > 正文

Map笔记总结

2019-11-15 01:15:30
字体:
来源:转载
供稿:网友
Map笔记总结

Map :存储的是键值对,一对一对出现的,要保证键的唯一性.

Map常见的三个子类.1.HashTable 底层是哈希表结构,不能存在null的情况.该集合是线程同步的.效率低此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。2.HashMap底层是哈希表数据结构,允许null值和null键,该集合不同步. 效率高3.TreeMap 底层是二叉树结构, 线程不同步,具备排序的特点.可以给Map集合中的键排序.与Set很像,Set集合的底层就是使用了Map集合方法.

Map其共性方法有:

1.添加  put()  putAll()2.删除  clear();  remove();3.判断  containsValue(Object value)  containsKey(Object key)  isEmpty();4.获取  get();  size();  values();

基本共性方法代码演示:

import java.util.*;class MapDemo{    public static void main(String [] args)    {        Map<String,String> map = new HashMap<String,String>();  //Hash无序的.                //添加元素,添加了相同的键,后添加的值会将原先的键对应的值替换掉.put方法会返回原先被覆盖的值.                sop("Put :"+map.put("01","zhangsan01"));        sop("Put :"+map.put("01","wangwu"));        map.put("02","zhangsan02");        map.put("03","zhangsan03");                //判断是否包含        sop("containsKey : zhangsan01 "+"------"+map.containsKey("01"));        //sop("remove : "+map.remove("03"));  //找寻键,并打印出其对应的值: zhangsan03                //获取        sop("get : "+map.get("02"));                 map.put("04",null);          sop("get : "+map.get("04"));        //可以通过个get方法的返回值来判断一个 键 是否存在. 通过返回null来判断.                //获取Map集合中的所有值        Collection<String> coll =  map.values();        sop(coll);                sop(map);    }    public static void sop(Object obj)    {        System.out.PRintln(obj);        }    }

Map的重点方法:  entrySet()  KeySet()这两种方法就是Map集合取出元素的方式:

Map集合两种取出方式:

1.Set<k> keySet 将Map中所有的键存入到Set集合.Set具备迭代器,可以用迭代取出所有的键.在根据get方法,获取每个键所对应的值.Map集合取出原理:转成Set集合.在通过迭代器取出.

2.Set<Map.Entry<k,v>> entrySet

将map集合中的 映射关系 存入到Set集合中,这个关系的数据类型是 : Map.Entry

其中Entry其实是一个内部接口.定义在map接口里面

格式如下:interface Map{  public static interface Entry  {    public static void getValue();    public static void getKey();  }}class HashMap implements Map{  class Hash implements Map.Entry  {    public Object getValue(){};    public Object getKey(){};  }}

两种取出方式的代码演练:

/*Map集合两种取出方式:    1.Set<k> keySet             将map中所有的键存入到Set集合.Set具备迭代器,可以用迭代取出所有的键.            在根据get方法,获取每个键锁对应的值.                        Map集合取出原理:转成Set集合.在通过迭代器取出.                            2.Set<Map.Entry<k,v>>  entrySet ,将map集合中的 映射关系 存入到Set集合中,这个关系的数据类型是 : Map.Entry        Entry其实是一个内部接口.定义在map接口里面    interface Map    {        public static interface  Entry        {            public static void getValue();            public static void getKey();        }            }        class HashMap implements Map    {        class Hash implements Map.Entry        {            public Object getValue(){};            public Object getKey(){};        }    }    */import java.util.*;class MapDemo2{    public static void main(String [] args)    {        Map<String,String> map = new HashMap<String,String>();                  map.put("01","zhangsan01");        map.put("02","zhangsan02");        map.put("03","zhangsan03");        map.put("04","zhangsan04");                //将map集合中的 映射关系 取出.                Set<Map.Entry<String,String>> mapEntry = map.entrySet();                Iterator<Map.Entry<String,String>> it = mapEntry.iterator();                while(it.hasNext())        {            Map.Entry<String,String> me = it.next();                        String key = me.getKey();            String value = me.getValue();            sop("Key :"+key+"Value :"+value);        }                                /*                //获取Map集合的所有键,并放在Set集合中. 获取方法: keySet();        Set<String> keySet = map.keySet();                //迭代取出所有的键.        Iterator<String> it = keySet.iterator();                while(it.hasNext())        {            String key = it.next();                        //有了键以后可以通过Map集合的get(key)方法获取其对应的值.            String value = map.get(key);            sop("Key :"+key+" Value :"+value);        }                */            }    public static void sop(Object obj)    {        System.out.println(obj);        }    }

相关练习:

/*练习:                每一个学生都有对应的归属地。        键值对:    学生Student为键,地址类型String值。        学生属性:姓名,年龄。        注意:姓名和年龄相同的视为同一个学生。        保证学生的唯一性。        1.描述学生。        2.定义map容器。将学生作为键,地址作为值。存入。        3.获取map集合中的元素。*/import java.util.*;class MapTest{    public static void main(String [] args)    {        Map<Student,String> map = new HashMap<Student,String>();                  map.put(new Student("zhangsan01",21),"beijing");        map.put(new Student("zhangsan02",22),"shanghai");        map.put(new Student("zhangsan03",23),"guangzhou");        map.put(new Student("zhangsan04",24),"shenzhen");            //第一种取出方式:keySet        Set<Student> keySet = map.keySet();                Iterator<Student> it = keySet.iterator();                while(it.hasNext())        {            Student stu = it.next();                        String addr = map.get(stu);                        sop("第一种取出方式 : student : "+stu.getName()+", age : "+stu.getAge()+", address : "+addr);            }        sop("-----------------------------------------");        //第二种取出方式:entrySet                Set<Map.Entry<Student,String>> entrySet = map.entrySet();                Iterator<Map.Entry<Student,String>> iter = entrySet.iterator();                while(iter.hasNext())        {            Map.Entry<Student,String> me = iter.next();                        Student stu = me.getKey();                        String addr = me.getValue();                        sop("第二种取出方式 : student : "+stu.getName()+", age : "+stu.getAge()+", adresss :"+addr);        }                          }    public static void sop(Object obj)    {        System.out.println(obj);        }    }class Student implements Comparable<Student>{    private String name;    private int age;        Student(String name,int age)    {        this.name = name;        this.age = age;    }        public int compareTo(Student s)    {        if(!(s instanceof Student))            throw new ClassCastException("类型匹配失败");                    int num = new Integer(this.age).compareTo(new Integer(s.age));            if(num == 0)            {                return this.name.compareTo(s.name);            }                return num;    }                public int hashCode()    {        return name.hashCode()+age*17;    }        public boolean equals(Object obj)    {        if(!(obj instanceof Student))            throw new ClassCastException("类型匹配失败");                Student stu = (Student)obj;                return this.getName().equals(stu.getName()) && this.age==stu.age;    }        public void setName(String name)    {        this.name = name;    }        public void setAge(int age)    {        this.age = age;    }        public String getName()    {        return name;    }        public  int getAge()    {        return age;    }    }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表