专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Map接口

Map接口

存储双列数据,存储key-value对的数据,类似于函数y = f(x)

Map接口继承树

70_1.png

实现类

  • Map
    • HashMap
      • LinkedHashMap
    • TreeMap
    • Hashtable
      • Properties

说明

1、 HashMap:作为Map的主要实现类,线程不安全,效率高,可以存储null的key和value
2、 LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。对于频繁的遍历操作,此类的执行效率高于HashMap

原因:在原有的HashMap底层结构的基础上,添加了一对指针,指向前一个和后一个元素

3、 TreeMap:保证按照添加的key-value对进行排序,实现排序遍历,此时考虑key的自然排序或定制排序(底层使用红黑树)
4、 Hashtable:作为古老的实现类,线程安全,效率低,不可以存储null的key和value
5、 Properties:常用来处理配置文件。key和value都是String类型

HashMap底层

  • jdk7:数组 + 链表
  • jdk8:数组 + 链表 + 红黑树

Map结构的理解

70_2.png

  • key:无序的,不可重复的,使用Set存储所有的key

    在HashMap中,要求key所在的类要重写equals()和hashCode()

  • value:无序的,可重复的

    value所在类要求重写equals()

  • Entry:一个键值对(key – value)构成一个entry对象,key和value相当于两个属性

    无序的,不可重复的,使用Set存储所有的entry

Map中常用的方法

1、 put(Object key , Object value)

将指定的key-value添加到(或修改)当前map对象中
    HashMap map = new HashMap();
    //添加操作
    map.put("AA",123);
    map.put("BB",79);
    map.put("CC",56);
    map.put("DD",123);
    //修改操作
    map.put("AA",87);//现有的key相同,就要替换原key中的值为新的value值

    System.out.println(map);

![70\_3.png][70_3.png]

2、 putAll(Map m)

将m中所有的key-value对存放在当前的map中
    HashMap m = new HashMap();
    map.put("Ann",90);
    map.put("Jack",80);
    map.put("Lisa",70);

    map.putAll(m);
    System.out.println(map);//{AA=87, BB=79, CC=56, DD=123, Ann=90, Jack=80, Lisa=70}

3、 remove(Object key)

移除指定key的key-value对,并返回value
    System.out.println(map.remove("Ann"));//90
    System.out.println(map);//{AA=87, BB=79, CC=56, DD=123, Jack=80, Lisa=70}

4、 clear()

清空当前map中所有的数据,与map = null 操作不同

数据清理掉,对象依旧存在

此时map的长度为0
    map.clear();
    System.out.println(map);//{}

5、 get(Object key)

获取指定key对应的value
    HashMap map = new HashMap();
    map.put("AA",123);
    map.put("BB",79);
    map.put("CC",56);
    map.put("DD",123);

    System.out.println(map.get("AA"));//123

6、 containKey(Object key)

是否包含指定的key
    System.out.println(map.containsKey("AA"));//true

7、 containValue(Object value)

是否包含指定的value

如果map中有多个相同的value,只要找到第一个,就会返回true
    System.out.println(map.containsValue(123));//true

8、 size()

返回map中key-value对的个数
    System.out.println(map.size());//4

9、 isEmpty()

判断当前map是否为空
    System.out.println(map.isEmpty());//false

10、 equals(Object obj)

判断当前map和参数对象obj是否相等
    HashMap map1 = new HashMap();
    map1.put("AA",123);
    map1.put("BB",79);
    map1.put("CC",56);
    map1.put("DD",123);

    System.out.println(map.equals(map1));//true

11、 keySet()

返回所有的key构成的Set集合
    HashMap map = new HashMap();
    map.put("AA",123);
    map.put("BB",79);
    map.put("CC",56);
    map.put("DD",123);

    System.out.println(map.keySet());//[AA, BB, CC, DD]

    Set set = map.keySet();
    Iterator iterator = set.iterator();
    while (iterator.hasNext()){
        System.out.println(iterator.next());
    }

12、 values()

遍历所有的value集
    Collection values = map.values();
    Iterator iterator1 = values.iterator();
    while (iterator1.hasNext()){
        System.out.println(iterator1.next());
    }
    //123
    //79
    //56
    //123

13、 entrySet()

遍历所有的key-value

entrySet集合中的元素都是entry
    Set set1 = map.entrySet();
    Iterator iterator2 = set1.iterator();
    while (iterator2.hasNext()){
        System.out.println(iterator2.next());
    }

![70\_4.png][70_4.png]

总结

1、 添加:put(Object key , Object value)
2、 删除:remove(Object key)
3、 修改:put(Object key , Object value)
4、 查询:get(Object obj)
5、 长度:size()
6、 遍历:keySet()/values()/entrySet()

未经允许不得转载:搜云库技术团队 » Map接口

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们