栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-09-27 查找表Map详解:

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-09-27 查找表Map详解:

 一、java.util.Map

Map在java中是一种非常常用的数据结构。它体现的结构是一个多行两列的表格,其中左侧的称为key,右侧的称为value。

Map总是成对保存数据,并且总是根据key获得对应的value。因此我们可以将查询的条件作为key,查询对应的结果作为value保存到Map中。

Map有一个要求:key不允许重复(根据key自身的equals方法比较判定)

java.util.Map是所有Map的顶级接口,规定了Map的相关功能。

1、常用实现类及区别:

java.util.HashMap:称为散列表,是使用散列算法实现的Map,是当今查询速度最快的数据结构,允许使用null(key和value都可以为null)。

java.util.TreeMap:使用红黑树实现的Map,不允许使用null(key和value均不能为null)

java.util.HashTable:与HashMap大致相同,但是线程安全,不允许使用null。

2、常用方法:

1、[V] put(K k,V v):

将给定的键值对存入Map,由于Map要求key不允许重复,若使用已有的key存入value

时则为替换操作,返回值为旧value,否则返回值为null。

2、[int] size():

获取Map的元素个数,每组键值对算一组元素。

3、[V] get(Object k):

根据给定的key值获取对应的value。如果给定的key不存在,则返回值为null。

4、[V] remove(Object k):

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

5、[boolean] containsKey(Object k):

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

6、[boolean] containsValue(Object v):

判断当前的map是否包含给定的value值。

如果Map的value是包装类类型时,在接收value值的时候一定要用包装类类型的变量接收,

不要使用对应的基本类型变量接收。避免因为自动拆装箱出现空指针异常。

3、Map的遍历

以下列代码为例:

        Map map = new HashMap<>();
        map.put("语文",97);
        map.put("数学",98);
        map.put("英语",99);
        map.put("体育",60);
        System.out.println(map);

1、遍历所有的key:[Set集合] keySet() 

将当前Map中所有的key以一个Set集合的形式返回。遍历该集合等同于遍历Map中所有的key

        Set keySet = map.keySet();
        System.out.println(keySet);//[体育, 数学, 语文, 英语]
        for (String key: keySet) {
            System.out.println("key="+key);
        }
        keySet.forEach(k -> System.out.println(k));

2、遍历所有的键值对:[Set] entrySet()

将当前Map中的每一组键值对以若干个Entry实例保存,并且存入一个Set集合后返回。

java.util.Map.Entry该接口的每一个实例用于表示Map中的一组键值对,该类提供了两个常用方法:[K] getKey() 、[V] getValue()

        Set> me = map.entrySet();
        System.out.println(me);//[体育=60, 数学=98, 语文=97, 英语=99]
        for (Map.Entry mey: me) {
            System.out.println(mey);
            System.out.println("key:"+mey.getKey()+"|value:"+mey.getValue());
        }
        //JDK8之后,Map也提供了forEach()方法,用lambda表达式遍历
        map.forEach((k,v)-> System.out.println(k+":"+v));

3、遍历所有的value:[Collection] values(): 

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

        Collection values = map.values();
        System.out.println(values);//[60, 98, 97, 99]
        for (Integer score: values) {
            System.out.println(score);
        }
        values.forEach(score -> System.out.println("分数为:"+score));

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270195.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号