Map集合

发布时间:2023年12月29日

Map集合

Map集合的概述和使用

  • interface Map<K,V> :K:键的类型;V:值得类型;

  • 将键映射到值的对象;不能包含重复的键;每个键可以映射到最多一个值

demo:

package com.itxs.demo01;

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

/**
 * @Classname : demo01
 * @Description : TODO Map集合的使用
 * @Author : lin_refuel@qq.com
 */
public class demo01 {
    public static void main(String[] args) {
        // 定义一个Map集合
        Map<String,String> map = new HashMap<>();//底层也是哈希表
        // Map集合添加成员的方式
        map.put("Stu01","黄固");
        map.put("Stu02","欧阳锋");
        map.put("Stu03","南帝");
        map.put("Stu04","洪七公");
        System.out.println(map);
        System.out.println("============");
        // Stu03是唯一的,修改南帝,可以通过Stu03(键值),进行修改名字
        map.put("Stu03","段智兴");
        System.out.println(map);
    }
}

在这里插入图片描述

HashMap的一些常用方法

方法名说明
V put(K key, V value)添加或修改元素
V remove(Object Key)删除键对应的元素
void clear()移除所有的键值对元素
boolean containsKey(Object Key)判断集合是否包含指定的键
boolean containsValue(Object Value)判断集合是否包含指定的值
boolean isEmpty()判断集合是否为空
int size()返回集合的长度

demo:

package com.itxs.demo01;

import java.util.HashMap;

/**
 * @Classname : demo02
 * @Description : TODO Map集合的一些常用功能
 * @Author : lin_refuel@qq.com
 */
public class demo02 {
    public static void main(String[] args) {
        //定义一个HashMap集合
        HashMap<String, String> hm = new HashMap<>();
        // 添加成员
        hm.put("STU001", "黄固");
        hm.put("STU002", "欧阳锋");
        hm.put("STU003", "段智兴");
        hm.put("STU004", "洪七公");
        //  System.out.println(hm);
        //*********************************************
        // remove 删除键对应的元素
        //hm.remove("STU003"); // 删除 段智兴
        //*********************************************
        // clear 清空所有元素
        // hm.clear(); //慎用
        //*********************************************
        // 判断集合是否为空
        // System.out.println(hm.isEmpty());// 不是空返回false,空集合返回true
        //**********************************************
        //判断集合当中是否有存在的键
        // System.out.println(hm.containsKey("STU001")); // 集合存在STU001键返回true
        // System.out.println(hm.containsKey("STU007")); // 集合中不存在STU007返回false
        //************************************************
        //判断集合中是否存在已有的值
        System.out.println(hm.containsValue("黄固")); //集合中存在黄固 返回true
        System.out.println(hm.containsValue("王重阳"));//集合中不存在王重阳,返回false
        System.out.println(hm);
    }
}

Map集合一些获取的功能

方法名说明
V get(Object Key)根据键获取值
Set<K> keySet()获取所有键的集合
Collection<V> values()获取所有值的集合
Set<Map.Entry<K,V>> entrySet()获取所有键值对对象的集合

demo:

package com.itxs.demo01;

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

/**
 * @Classname : demo03
 * @Description : TODO HashMap的获取功能
 * @Author : lin_refuel@qq.com
 */
public class demo03 {
    public static void main(String[] args) {
        HashMap<String, String> hm = new HashMap<>();
        //添加成员
        hm.put("STU001", "黄固");
        hm.put("STU002", "欧阳锋");
        hm.put("STU003", "段智兴");
        hm.put("STU004", "洪七公");
        //****************************************
        // 根据键获取一个值
        //System.out.println(hm.get("STU001")); //黄固
        //****************************************
        // 获取一个键的集合 KeySet方法
//        Set<String> hms = hm.keySet();
//        for (String s : hms) {
//            System.out.print(s+",");//STU001,STU003,STU002,STU004,
//        }
        //****************************************
        //获取HashMap集合里面的值类型集合
//        Collection<String> values = hm.values();
//        for (String value : values) {
//            System.out.print(value + ",");//黄固,段智兴,欧阳锋,洪七公,
//        }
        //****************************************
        // 获取 键 值 对的集合
        Set<Map.Entry<String, String>> entries = hm.entrySet();
       for (Map.Entry<String, String> entry : entries) {
          System.out.print(entry + ",");//STU001=黄固,STU003=段智兴,STU002=欧阳锋,STU004=洪七公,
        }
    }
}

Map集合的遍历

三种遍历方式,常用的是第二种

package com.itxs.demo01;

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

/**
 * @Classname : demo04
 * @Description : TODO Map集合的遍历
 * @Author : lin_refuel@qq.com
 */
public class demo04 {
    public static void main(String[] args) {
        HashMap<String, String> hm = new HashMap<>();
        //添加成员
        hm.put("STU001","黄固");
        hm.put("STU002","欧阳锋");
        hm.put("STU003","段智兴");
        hm.put("STU004","洪七公");
        //*********************************************
        // 第一种方式 ;values 只能获取值
//        Collection<String> values = hm.values();
//        for (String value : values) {
//            System.out.println(value);
//        }
        //*********************************************
        //第二种方式,通过获取键的集合,来获取键对应的值
        Set<String> hk = hm.keySet();
        for (String s : hk) {
            System.out.println(s +"<==>" + hm.get(s));
        }
        //*********************************************
        //第三种方式,通过获取键值对的方式,分别获取键和值
//        Set<Map.Entry<String, String>> es = hm.entrySet();
//        for (Map.Entry<String, String> e : es) {
//            String key = e.getKey(); // 获取键值对中的键
//            String value = e.getValue();
//            System.out.println(key + "<==>" + value);
//        }
    }
}

Map集合存储学生类对象,进行遍历

学生类对象

package com.itxs.demo01;

/**
 * @Classname : Student
 * @Description : TODO 学生类对象
 * @Author : lin_refuel@qq.com
 */
public class Student {
    //两个基本属性
    private String name;//姓名
    private int age;//年龄

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Student() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

三种遍历方式

package com.itxs.demo01;

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

/**
 * @Classname : demo05
 * @Description : TODO Map集合存储学生类对象进行遍历
 * @Author : lin_refuel@qq.com
 */
public class demo05 {
    public static void main(String[] args) {
        HashMap<String, Student> hm = new HashMap<>();
        // 添加对象
        hm.put("STU001",new Student("andy",19));
        hm.put("STU002",new Student("lucy",16));
        hm.put("STU003",new Student("lily",17));
        hm.put("STU004",new Student("jim",18));
        hm.put("STU005",new Student("LiciNius",22));
        //三种方式进行遍历
        //***************************************************
        //第一种:获取集合里面的值
//        Collection<Student> hv = hm.values();
//        for (Student stu : hv) {
//            System.out.println(stu);
//        }
        //***************************************************
        // 第二种,获取键的集合,根据键来获取值
        Set<String> hks = hm.keySet();
        for (String hk : hks) {
            Student stu = hm.get(hk);
            System.out.println(hk + "<==>" + stu.getName() +","+stu.getAge());
        }
        //***************************************************
        //第三种方式,获取键值对,分别获取键和值
//        Set<Map.Entry<String, Student>> es = hm.entrySet();
//        for (Map.Entry<String, Student> e : es) {
//            String key = e.getKey();
//            Student s = e.getValue();
//            System.out.println(key + "<==>" + s.getName() +","+s.getAge());
//        }
    }
}

Arraylist集合存储HashMap集合

三种遍历方式

package com.itxs.demo02;

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

/**
 * @Classname : demo01
 * @Description : TODO Arraylist集合存储 HashMap集合
 * @Author : lin_refuel@qq.com
 */
public class demo01 {
    public static void main(String[] args) {
        ArrayList<HashMap<String, String>> list = new ArrayList<>();
        // 三个HashMap集合
        HashMap<String, String> hm01 = new HashMap<>();
        HashMap<String, String> hm02 = new HashMap<>();
        HashMap<String, String> hm03 = new HashMap<>();
        // 每个集合添加两个元素
        hm01.put("杨过", "小龙女");
        hm01.put("雷公", "电母");
        //**********************
        hm02.put("萧炎", "林动");
        hm02.put("孙悟空", "猪八戒");
        //********************** 休息看剧《梦华录》
        hm03.put("顾千帆", "赵盼儿");
        hm03.put("孙三娘", "杜长风");
        //*****************************************************
        // list集合添加元素
        list.add(hm01);
        list.add(hm02);
        list.add(hm03);
        //======================================================
        //第一种方式
        for (HashMap<String, String> shm : list) {
            Set<String> st = shm.keySet(); //获取每个HashMap键集合
            for (String s : st) {
                System.out.println(s + "<==>" + shm.get(s));
            }
        }
        //======================================================
        System.out.println("===================");
        //第二种方式
        for (HashMap<String, String> shm : list) {
            Set<Map.Entry<String, String>> es = shm.entrySet();
            for (Map.Entry<String, String> e : es) {
                String key = e.getKey();
                String val = e.getValue();
                System.out.println(key + "<==>" + val);
            }
        }
    }
}

运行结果:
在这里插入图片描述

HashMap集合存储Arraylist集合

package com.itxs.demo02;

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

/**
 * @Classname : demo02
 * @Description : TODO HashMap集合存储ArrayList集合
 * @Author : lin_refuel@qq.com
 */
public class demo02 {
    public static void main(String[] args) {
        //HashMap集合存储ArrayList集合
        HashMap<String, ArrayList<String>> hm = new HashMap<>();
        // 三个ArrayList集合
        ArrayList<String> list01 = new ArrayList<>();
        ArrayList<String> list02 = new ArrayList<>();
        ArrayList<String> list03 = new ArrayList<>();
        // ***********************************************
        // list01添加元素
        list01.add("黄固");
        list01.add("欧阳锋");
        list01.add("王重阳");
        list01.add("段智兴");
        list01.add("洪七公");
        //************************************************
        //list02添加元素
        list02.add("降臣");
        list02.add("萤勾");
        list02.add("旱魃");
        list02.add("侯卿");
        //*************************************************
        //list03添加元素
        list03.add("刘德华");
        list03.add("郭富城");
        list03.add("张学友");
        list03.add("黎明");
        //************************************************
        //HashMap hm添加元素
        hm.put("中原五绝", list01);
        hm.put("玄冥教四大尸祖", list02);//《画江湖之不良人》
        hm.put("港星四大天王", list03);
        //***************************************************
        //第一种遍历方式,获取键集合
        Set<String> Ks = hm.keySet();
        for (String k : Ks) {
            ArrayList<String> list = hm.get(k);
            System.out.println(k);
            System.out.println("\t" + list);
        }
        //***************************************************
        System.out.println("=======================================");
        //第二种遍历方式
        Set<Map.Entry<String, ArrayList<String>>> es = hm.entrySet();
        for (Map.Entry<String, ArrayList<String>> e : es) {
            String key = e.getKey();
            ArrayList<String> value = e.getValue();
            System.out.println(key);
            for (String s : value) {
                System.out.println("\t" + s);
            }
        }
    }
}

运行结果:
在这里插入图片描述

Map集合进行统计,统计字符串每个字符出现的次数

package com.itxs.demo02;

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

/**
 * @Classname : demo03
 * @Description : TODO 通过Map集合进行统计字符串里面字符出现次数
 * @Author : lin_refuel@qq.com
 */
public class demo03 {
    public static void main(String[] args) {
          //输入对象,随意输入一个字符串
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str = scanner.nextLine();
        // 定义一个HashMap集合
        HashMap<Character, Integer> cis = new HashMap<>();
        //通过循环进行判断
        for (int i = 0; i < str.length(); i++) {
            char a = str.charAt(i);//获取字符串每个字符,当作键值
            Integer inte = cis.get(a);//根据键键判断是否存
            if(null == inte){ //判断为空则是出现第一次,第一次添加到集合,值为1
                cis.put(a,1);//
            }else{
                inte++; // 不是第一次出现 键不变,值进行+1
                cis.put(a,inte);
            }
        }
        // 输出字符串里面每个字符出现的次数
        Set<Character> ke = cis.keySet();
        for (Character character : ke) {
            System.out.println(character +":"+ cis.get(character));
        }
    }
}

运行结果:
在这里插入图片描述

文章来源:https://blog.csdn.net/2301_81153022/article/details/135277753
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。