Map接口

作者: Jycoding | 来源:发表于2022-08-16 16:24 被阅读0次

Java.util接口Map<K,V>

类型参数 : K - 表示此映射所维护的键 V – 表示此映射所维护的对应的值

也叫做哈希表、散列表. 常用于键值对结构的数据.其中键不能重复,值可以重复

1.2 特点

Map可以根据键来提取对应的值

Map的键不允许重复,如果重复,对应的值会被覆盖

Map存放的都是无序的数据

Map的初始容量是16,默认的加载因子是0.75

TIPS:源码摘抄:

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;

初始容量1<<4,相当于1*(2^4),也就是16

static final float DEFAULT_LOAD_FACTOR = 0.75f;

默认的加载因子是0.75f,也就是存到75%开始扩容,按照2的次幂进行扩容

学习Map接口中的方法即可

void clear() 从此映射中移除所有映射关系(可选操作) boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true

boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true

Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图

boolean equals(Object o) 比较指定的对象与此映射是否相等

V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null

int hashCode() 返回此映射的哈希码值

boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true

Set keySet() 返回此映射中包含的键的 Set 视图

V put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)

void putAll(Map<? extends K,? extends V> m)从指定映射中将所有映射关系复制到此映射中(可选操作)

V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)

int size() 返回此映射中的键-值映射关系数

Collection values() 返回此映射中包含的值的 Collection 视图

package cn.tedu.list;

import java.util.*;

/**本类用于测试Map接口*/

public class MapDemo {

    public static void main(String[] args) {

        //1.创建Map对象

        /**Map中的数据要符合映射规则,一定注意要同时指定K和V的数据类型

        * 至于这个K和V具体要指定成什么类型,取决于具体的业务需求*/

        Map<Integer,String> map = new HashMap<>();//注意导包:java.util

        //2.向map集合存入数据,注意方法是put(),并且需要存入一对<K,V>的值

        map.put(9527,"白骨精");

        map.put(9528,"黑熊精");

        map.put(9529,"鲤鱼精");

        map.put(9530,"黄毛怪");

        map.put(9531,"黑熊精");

        map.put(9527,"女儿国国王");

        /**1.map中存放着的都是无序的数据

        * 2.map中的value可以重复-比如我们可以存两个黑熊精

        * 3.map中的key不允许重复,如果重复,后面的value会把前面的value覆盖掉

        * 比如女儿国国王和白骨精都是9527,白骨精就被覆盖掉了*/

        System.out.println(map);//查看map集合中的数据是否存入成功

        //3.进行方法测试

        //map.clear();//清空集合

        System.out.println(map.hashCode());//获取集合的哈希码

        System.out.println(map.equals("黄毛怪"));//判断“黄毛怪”是否与集合对象相等

        System.out.println(map.isEmpty());//判断集合是否为空

        System.out.println(map.size());//获取集合中元素的个数

        //判断当前map集合中是否包含指定的Key键

        System.out.println(map.containsKey(9527));//true

        //判断当前map集合中是否包含指定的Value

        System.out.println(map.containsValue("白骨精"));//false,因为已被覆盖

        //根据key值获取到对应的value值

        System.out.println(map.get(9530));

        //根据此key值对应的键值对,K与V都删了

        System.out.println(map.remove(9529));

        System.out.println(map.containsKey(9529));

        System.out.println(map.containsValue("鲤鱼精"));

        //将map集合中的所有value取出,放入Collection集合中

        //Collection<Type>中Type的类型,取决于map中value的类型

        Collection<String> values = map.values();

        System.out.println(values);//[女儿国国王, 黑熊精, 黄毛怪, 黑熊精]

        //4.map集合的迭代方式一

        /**方式一:

        * 遍历map中的数据,但是map本身没有迭代器,所以需要先转换成set集合

        * Set<Key>:把map中的所有key值存入到set集合当中--keySet()*/

        //4.1将map集合中的key值取出存入set集合中,集合的泛型就是key的类型Integer

        Set<Integer> keySet = map.keySet();

        //4.2想要遍历集合就需要获取集合的迭代器

        Iterator<Integer> it = keySet.iterator();

        //4.3循环迭代集合中的所有元素

        while(it.hasNext()){//判断是否有下一个元素可以迭代

            Integer key = it.next();//拿到本轮循环中获取到的map的key

            String value = map.get(key);

            System.out.println("{"+key+","+value+"}");

        }

        /**方式二:

        * 遍历map集合,需要把map集合先转成set集合

        * 是把map中的一对键值对key&value作为一个Entry<K,V>整体放入set

        * 一对K,V就是一个Entry*/

        Set<Map.Entry<Integer, String>> entrySet = map.entrySet();

        //获取迭代器

        Iterator<Map.Entry<Integer, String>> it2 = entrySet.iterator();

        while(it2.hasNext()){//判断是否有下一个元素可迭代

            //本轮遍历到的一个Entry对象

            Map.Entry<Integer, String> entry = it2.next();

            Integer key = entry.getKey();//获取Entry中的key

            String value = entry.getValue();//获取Entry中的value

            System.out.println("{"+key+","+value+"}");

        }

    }

}

/**方式二:

        * 遍历map集合,需要把map集合先转成set集合

        * 是把map中的一对键值对key&value作为一个Entry<K,V>整体放入set

        * 一对K,V就是一个Entry*/

        Set<Map.Entry<Integer, String>> entrySet = map.entrySet();

        //获取迭代器

        Iterator<Map.Entry<Integer, String>> it2 = entrySet.iterator();

        while(it2.hasNext()){//判断是否有下一个元素可迭代

            //本轮遍历到的一个Entry对象

            Map.Entry<Integer, String> entry = it2.next();

            Integer key = entry.getKey();//获取Entry中的key

            String value = entry.getValue();//获取Entry中的value

            System.out.println("{"+key+","+value+"}");

        }

相关文章

  • Map类源码解析

    一、Map接口的架构    Map接口的架构试图如下: ①SortedMap接口继承Map接口,Navigable...

  • 三十四、Map接口

    一、Map接口介绍 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储...

  • 08.Map接口的概述

    Map接口概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据...

  • java day 14

    Map java Map及Map.Entry详解Map是java中的接口,Map.Entry是Map的一个内部接口...

  • Java学习——day 10

    主要内容 Map接口 Set接口 迭代器 笔记详情 1. Map接口 实现map接口的类,用来存储键值对。常用到的...

  • Map集合了解一下

    前言 Map映射Map映射的特点Map接口结构Map接口常见Api解析put(K key, V value)put...

  • Java 进阶:集合框架3

    目录 一、Map 接口1. Map 和 Collection2. Map 接口中的常用方法3. Map 集合遍历—...

  • Java 集合框架(Map 接口)

    Map 接口简介 对于 Map 接口,Java的官方文档是这样介绍的: A Map is an object th...

  • Map集合Map<Integer,String> m

    01Map集合概述 A:Map集合概述:我们通过查看Map接口描述,发现Map接口下的集合与Collection接...

  • Map接口

    01Map集合概述 A:Map集合概述:我们通过查看Map接口描述,发现Map接口下的集合与Collection接...

网友评论

      本文标题:Map接口

      本文链接:https://www.haomeiwen.com/subject/endbirtx.html