<rp id="fwvfj"></rp>
      1. <button id="fwvfj"><object id="fwvfj"><input id="fwvfj"></input></object></button>
        当前位置: 首页 / 技术分享 / 正文
        Map接口与HashMap集合

        2022-12-22

        map 集合 java

        Map接口简介

        Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为映射。从Map集合中访问元素时,只要指定了Key,就能找到对应的Value。

        Map接口中的常用方法如下表。

        1

        HashMap集合

        HashMap集合是Map接口的一个实现类,用于存储键值映射关系,但HashMap集合没有重复的键并且键值无序。接下来通过一个案例学习HashMap的用法。

        Java
        import java.util.HashMap;

        public class Example14 {
            public static void main(String[] args) {
                HashMap map = new HashMap(); // 创建Map对象
                map.put("1", "张三"); // 存储键和值
                map.put("2", "李四");
                map.put("3", "王五");
                System.out.println("1:" + map.get("1")); // 根据键获取值
                System.out.println("2:" + map.get("2"));
                System.out.println("3:" + map.get("3"));
            }
        }

        Map集合中的键具有唯一性,现在向Map集合中存储一个相同的键看看会出现什么情况,下面增加一行代码,如下所示: 

        Java
        map.put("3", "赵六");

         Map中仍然只有3个元素,只是第二次添加的值“赵六”覆盖了原来的值“王五”,这也证实了Map中的键必须是唯一的,不能重复,如果存储了相同的键,后存储的值则会覆盖原有的值,简而言之就是:键相同,值覆盖。

        在程序开发中,经常需要取出Map中所有的键和值,那么如何遍历Map中所有的键值对呢?有两种方式可以实现。

        第一种方式就是先遍历Map集合中所有的键,再根据键获取相应的值。接下来通过一个案例来演示先遍历Map集合中所有的键,再根据键获取相应的值。 

        Java
        import java.util.HashMap;
        import java.util.Iterator;
        import java.util.Set;

        public class Example15 {
            public static void main(String[] args) {
                HashMap map = new HashMap(); // 创建Map集合
                map.put("1", "张三"); // 存储键和值
                map.put("2", "李四");
                map.put("3", "王五");
                Set keySet = map.keySet(); // 获取键的集合
                Iterator it = keySet.iterator(); // 迭代键的集合
                while (it.hasNext()) {
                    Object key = it.next();
                    Object value = map.get(key); // 获取每个键所对应的值
                    System.out.println(key + ":" + value);
                }
            }
        }

         首先调用Map对象的KeySet()方法,获得存储Map中所有键的Set集合,然后通过Iterator迭代Set集合的每一个元素,即每一个键,最后通过调用get(String key)方法,根据键获取对应的值。

        Map集合的另外一种遍历方式是先获取集合中的所有的映射关系,然后从映射关系中取出键和值。接下来通过一个案例演示这种遍历方式。

        Java
        import java.util.HashMap;
        import java.util.Iterator;
        import java.util.Map;
        import java.util.Set;

        public class Example16 {
            public static void main(String[] args) {
                HashMap map = new HashMap(); // 创建Map集合
                map.put("1", "张三"); // 存储键和值
                map.put("2", "李四");
                map.put("3", "王五");
                Set entrySet = map.entrySet(); // 返回此映射中包含的映射关系的Set视图
                Iterator it = entrySet.iterator(); // 获取Iterator对象
                while (it.hasNext()) {
                    // 获取集合中键值对映射关系
                    Map.Entry entry = (Map.Entry) (it.next());
                    Object key = entry.getKey(); // 获取Entry中的键
                    Object value = entry.getValue(); // 获取Entry中的值
                    System.out.println(key + ":" + value);
                }
            }
        }

         首先调用Map对象的entrySet()方法获得存储在Map中所有映射的Set集合,这个集合中存放了Map.Entry类型的元素(Entry是Map内部接口),每个Map.Entry对象代表Map中的一个键值对,然后迭代Set集合,获得每一个映射对象,并分别调用映射对象的getKey()和getValue()方法获取键和值。

        在Map中,还提供了一些操作集合的常用方法,例如,values()方法用于得到map实例中所有的value,返回值类型为Collection;size()方法获取map集合类的大小;containsKey()方法用于判断是否包含传入的键;containsValue()方法用于判断是否包含传入的值;remove()方法用于根据key移除map中的与该key对应的value等。

        接下来通过一个案例演示Map这些方法的使用。 

        Java
        import java.util.Collection;
        import java.util.HashMap;
        import java.util.Iterator;

        public class Example17 {
            public static void main(String[] args) {
                HashMap map = new HashMap(); // 创建Map集合
                map.put("1", "张三"); // 存储键和值
                map.put("3", "李四");
                map.put("2", "王五");
                map.put("4", "赵六");
                System.out.println("集合大小为:" + map.size());
                System.out.println("判断是否包含传入的键:" + map.containsKey("2"));
                System.out.println("判断是否包含传入的值:" + map.containsValue("王五"));
                System.out.println("移除键为1的值是:" + map.remove("1"));
                Collection values = map.values();
                Iterator it = values.iterator();
                while (it.hasNext()) {
                    Object value = it.next();
                    System.out.println(value);
                }
            }
        }

         从上面的例子可以看出,HashMap集合迭代出来元素的顺序和存入的顺序是不一致的。如果想让这两个顺序一致,可以使用Java中提供的LinkedHashMap类,它是HashMap的子类,与LinkedList一样,它也使用双向链表来维护内部元素的关系,使Map元素迭代的顺序与存入的顺序一致。

        接下来通过一个案例学习LinkedHashMap的用法: 

        Java
        import java.util.Iterator;
        import java.util.LinkedHashMap;
        import java.util.Set;

        public class Example18 {
            public static void main(String[] args) {
                LinkedHashMap map = new LinkedHashMap(); // 创建Map集合
                map.put("1", "张三"); // 存储键和值
                map.put("2", "李四");
                map.put("3", "王五");
                Set keySet = map.keySet();
                Iterator it = keySet.iterator();
                while (it.hasNext()) {
                    Object key = it.next();
                    Object value = map.get(key); // 获取每个键所对应的值
                    System.out.println(key + ":" + value);
                }
            }
        }

        分享: 更多

        上一篇:TreeSet集合

        下一篇:TreeMap集合

        好程序员公众号

        • · 剖析行业发展趋势
        • · 汇聚企业项目源码

        好程序员开班动态

        More+
        • HTML5大前端 <高端班>

          开班时间:2021-04-12(深圳)

          开班盛况

          开班时间:2021-05-17(北京)

          开班盛况
        • 大数据+人工智能 <高端班>

          开班时间:2021-03-22(杭州)

          开班盛况

          开班时间:2021-04-26(北京)

          开班盛况
        • JavaEE分布式开发 <高端班>

          开班时间:2021-05-10(北京)

          开班盛况

          开班时间:2021-02-22(北京)

          开班盛况
        • Python人工智能+数据分析 <高端班>

          开班时间:2021-07-12(北京)

          预约报名

          开班时间:2020-09-21(上海)

          开班盛况
        • 云计算开发 <高端班>

          开班时间:2021-07-12(北京)

          预约报名

          开班时间:2019-07-22(北京)

          开班盛况
        IT培训IT培训
        在线咨询
        IT培训IT培训
        试听
        IT培训IT培训
        入学教程
        IT培训IT培训
        立即报名
        IT培训

        Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号

        精品亚洲A∨无码一区二区三区

        <rp id="fwvfj"></rp>
          1. <button id="fwvfj"><object id="fwvfj"><input id="fwvfj"></input></object></button>