Map 笔记

Map

1. java.util.Map接口   称为:查找表

 * Map是java中一种常用的数据结构,体现的是一个多行两列的表格。

 * 其中左列称为key,又列称为value。

 * Map总是根据key获取对应的value。

 * Map是java集合框架(Java Collection FrameWork)的一员。

 * 但是Map不是集合,它与Collection不存在继承关系。

 * 常用的实现类:

 * java.util.HashMap:散列表,哈希表。最常用的Map实现类

 * 特点:当今查询速度最快的数据结构

 * java.util.TreeMap:使用二叉树实现的Map

public class MapDemo {

    public static void main(String[] args) {

        //HashMap内部存放顺序与put顺序不一致

        Map map = new HashMap<>();

        //内部维护一个链表来记录put顺序,以便我们遍历时按照put顺序进行

//        Map map = new LinkedHashMap<>();

        /*

            V put(K k,V v)

            将一组键值对存入Map中。

            Map有一个要求:key不允许重复(equals比较)

            如果使用重复的key保存value则是替换value操作,此时方法返回值为被替换的

            value。没有替换时返回值为null。

         */

        Integer value = map.put("语文",99);

        System.out.println(value);//没有任何替换的value,返回值为null

        map.put("数学",98);

        map.put("英语",97);

        map.put("物理",96);

        map.put("化学",99);

        System.out.println(map);

        value = map.put("数学",88);

        System.out.println(value);//数学原来的98被替换了。

        System.out.println(map);

       

 /*

            V get(Object key)

            根据给定的key获取对应的value。

            如果给定的key在map中不存在,则返回值为null。

         */

        value = map.get("英语");

        System.out.println("英语:"+value);

        value = map.get("体育");

        System.out.println("体育:"+value);

        /*

            int size()

            返回当前Map中的元素个数。每一组键值对为1个元素。

         */

        int size = map.size();

        System.out.println("size:"+size);

        /*

            boolean containsKey(Object key)

            判断当前Map是否包含给定的key

            boolean containsValue(Object value)

            判断当前Map是否包含给定的value

         */

        boolean ck = map.containsKey("语文");

        System.out.println("是否包含key[语文]:"+ck);

        ck = map.containsKey("体育");

        System.out.println("是否包含key[体育]:"+ck);

        boolean cv = map.containsValue(99);

        System.out.println("是否包含value[99]:"+cv);

        cv = map.containsValue(55);

        System.out.println("是否包含value[55]:"+cv);

        /*

            V remove(Object key)

            删除当前Map中给定的key所对应的键值对。返回值为这个key对应的value

         */

        value = map.remove("数学");

        System.out.println(map);

        System.out.println(value);

    }

}

2. Map的遍历

 * Map提供了三种遍历方式:

 * 1:遍历所有的key

 * 2:遍历每一组键值对

 * 3:遍历所有的value(相对不常用)

public class MapDemo2 {

    public static void main(String[] args) {

        Map map = new HashMap<>();

        map.put("语文",99);

        map.put("数学",98);

        map.put("英语",97);

        map.put("物理",96);

        map.put("化学",99);

        System.out.println(map);

       

       /*

            遍历所有的key

            Set keySet()

            将当前Map中所有的key以一个Set集合形式返回。

         */

        Set keySet = map.keySet();

        for(String key : keySet){

            System.out.println("key:"+key);

        }

        /*

            遍历每一组键值对

            Set entrySet()

            将当前Map中每一组键值对以一个Entry实例表示并最终以Set集合返回所有键值对

            Map.Entry它的每一个实例用于表示Map中的一组键值对

            Entry上有两个常用方法:

            K getKey()

            V getValue()

         */

        Set> entrySet = map.entrySet();

        for(Map.Entry e :entrySet){

            String key = e.getKey();

            Integer value = e.getValue();

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

        }

        /*

            遍历所有的value

            Collection values()

            将当前Map中所有的value以一个集合形式返回

         */

        Collection values = map.values();

        for(Integer value : values){

            System.out.println("value:"+value);

        }

        /*

            Map也支持forEach方法。

         */

        map.forEach((k,v)-> System.out.println(k+":"+v));

    }

}

你可能感兴趣的:(java,开发语言)