您当前的位置: 首页 >  Java

小新爱学习.

暂无认证

  • 3浏览

    0关注

    89博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Java集合类】之Map集合的特点及使用

小新爱学习. 发布时间:2022-08-27 17:01:40 ,浏览量:3

在这里插入图片描述

在这里插入图片描述

个人名片:

🐼作者简介:一名大一在校生 🐻‍❄️个人主页:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:零基础学java ----- 重识c语言 ---- 计算机网络 🐓每日一句:于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。

文章目录
  • Map
    • 1、Map集合概述和使用
      • 1.1 Map集合概述:
      • 1.2 Map集合常用方法
        • 代码示例:
      • 1.3 Map集合的遍历
        • 方法一:
        • 方法二:
    • 欢迎添加微信,加入我的核心小队,请备注来意

Map 1、Map集合概述和使用 1.1 Map集合概述:

java.util 接口 Map 类型参数: K - 此映射所维护的键的类型 V - 映射值的类型

public interface Map 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。

Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。

Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。

Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。

注:将可变对象用作映射键时必须格外小心。当对象是映射中某个键时,如果以影响 equals 比较的方式更改了对象的值,则映射的行为将是不确定的。此项禁止的一种特殊情况是不允许某个映射将自身作为一个键包含。虽然允许某个映射将自身作为值包含,但请格外小心:在这样的映射上 equals 和 hashCode 方法的定义将不再是明确的。

1.2 Map集合常用方法 方法说明boolean equals(Object o)比较指定的对象与此映射是否相等。V get(Object key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。V put(K key, V value)将指定的值与此映射中的指定键关联(可选操作)。void clear()从此映射中移除所有映射关系(可选操作)。boolean containsKey(Object key)如果此映射包含指定键的映射关系,则返回 true。boolean containsValue(Object value)如果此映射将一个或多个键映射到指定值,则返回 true。boolean isEmpty()如果此映射未包含键-值映射关系,则返回 true。V get(Object key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。Set keySet()返回此映射中包含的键的 Set 视图。Set entrySet()返回此映射中包含的映射关系的 Set 视图。 代码示例:
import java.util.*;

public class CollectionsDemo {

   public static void main(String[] args) {
      Map m1 = new HashMap(); 
      m1.put("Zara", "8");
      m1.put("Mahnaz", "31");
      m1.put("Ayan", "12");
      m1.put("Daisy", "14");
      System.out.println();
      System.out.println(" Map Elements");
      System.out.print("\t" + m1);
   }
}
package com.ithmm_01;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class MapDemo01 {
    public static void main(String[] args) {
        //创建集合对象
        Map map = new HashMap();

        //往集合添加元素
        map.put("2101","zhangxiaohau");
        map.put("2102","wangxiaoer");
        map.put("2103","liuyidao");


        //根据键删除对应元素
//        System.out.println(map.remove("2102"));//wangxiaoer
//        System.out.println(map.remove("2105"));//null

        //移除所有键值对元素
        //map.clear();//{}

        // boolean containsKey(Object key)
        //          如果此映射包含指定键的映射关系,则返回 true。

        System.out.println(map.containsKey("2101"));//true
        // boolean containsValue(Object value)
        //          如果此映射将一个或多个键映射到指定值,则返回 true。
        System.out.println(map.containsValue("liuyidao"));//true

        //boolean isEmpty() |如果此映射未包含键-值映射关系,则返回 true。
        System.out.println(map.isEmpty());//false

        System.out.println(map.size());//3

//        V get(Object key)	返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
        System.out.println(map.get("2101"));//zhangxiaohau

        System.out.println(map.get("2102")); //wangxiaoer


//        Set keySet()	返回此映射中包含的键的 Set 视图。
        System.out.println(map.keySet());//3[2103, 2102, 2101]

//        Collection values()
//        返回此映射中包含的值的 Collection 视图。
        Collection values = map.values();
        for(String value : values){
            System.out.println(value);//liuyidao  wangxiaoer  zhangxiaohau

        }
        //输出集合对象
        System.out.println(map);//


    }
}

总结:Map 接口中键和值一一映射. 可以通过键来获取值。

  • 给定一个键和一个值,你可以将该值存储在一个 Map 对象。之后,你可以通过键来访问对应的值。
  • 当访问的值不存在的时候,方法就会抛出一个 NoSuchElementException 异常。
  • 当对象的类型和 Map 里元素类型不兼容的时候,就会抛出一个 ClassCastException 异常。
  • 当在不允许使用 Null 对象的 Map 中使用 Null 对象,会抛出一个 NullPointerException 异常。
  • 当尝试修改一个只读的 Map 时,会抛出一个 UnsupportedOperationException 异常。
1.3 Map集合的遍历 方法一:

操作:

  • 获取所有键的集合,用keySet()方法实现
  • 遍历键的集合,获取到每一个键,用增强for实现
  • 根据键去找值。用get(Object key)方法实现

代码示例:

package com.ithmm_01;
/**
 *  - 获取所有键的集合,用keySet()方法实现
 *  - 遍历键的集合,获取到每一个键,用增强for实现
 *  - 根据键去找值。用get(Object key)方法实现
 */

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

public class MapDemo02 {
    public static void main(String[] args) {
        //创建集合对象
        Map map = new HashMap();

        //往集合添加元素
        map.put("2101", "zhangxiaohau");
        map.put("2102", "wangxiaoer");
        map.put("2103", "liuyidao");

        //获取所有键的集合,用keySet()方法实现
        Set keySet = map.keySet();

        //遍历键的集合,获取到每一个键,用增强for实现
        for (String key :keySet){
            // 根据键去找值。用get(Object key)方法实现
            String value = map.get(key);
            System.out.println(key + "," +value);
        }

    }
}

控制台输出: 2103,liuyidao 2102,wangxiaoer 2101,zhangxiaohau

方法二:

操作:

  • 获取所有键值对对象的集合 Set entrySet()返回此映射中包含的映射关系的 Set 视图。
  • 遍历键值对对象的集合,得到每一个键值对对象 用增强for实现,得到每一个Map.Entry
  • 根据键值对对象获取键和值 用getKey()方法得到键 用getValue()方法得到值 代码示例:
package com.ithmm_01;

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

public class MapDemo03 {
    public static void main(String[] args) {
        //创建集合对象
        Map map = new HashMap();

        //往集合添加元素
        map.put("2101", "zhangxiaohau");
        map.put("2102", "wangxiaoer");
        map.put("2103", "liuyidao");

        //获取所有键值对对象的集合
        Set entrySet = map.entrySet();

        //遍历键值对对象的集合,得到每一个键值对对象
        //用增强for实现,得到每一个Map.Entry
        for (Map.Entry ss : entrySet) {
            //根据键值对对象获取键和值
            String key = ss.getKey();
            String value = ss.getValue();

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

        }
    }
}

控制台输出: 2103,liuyidao 2102,wangxiaoer 2101,zhangxiaohau

在这里插入图片描述

欢迎添加微信,加入我的核心小队,请备注来意

👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇

关注
打赏
1663374351
查看更多评论
立即登录/注册

微信扫码登录

0.0709s