JAVA学习笔记21.11.29(参考黑马程序员B站视频)

Map

一、Map集合

        1.概述

  • Interface Map<K,V> K:键的类型   V:值的类型
  • 将键映射到值的对象
  • 不能包含重复的键
  • 每个键最多映射到一个值

        2.创建Map集合的对象

                用多态的方式创建,利用具体的实现类HashMap。

        3.Map集合的基本功能

                1)V put(K key,V value):添加元素(键第二次出现时会替代前一次内容

                2)V remove(Object key):根据键删除对应的元素

                3)void clear():移除所有键对应的元素

                4)boolean containsKey(Object key):判断集合是否包含指定的键

                5)boolean containsValue(Object value):判断集合是否包含指定的值

                6)boolean isEmpty():判断集合是否为空

                7)int size():集合长度即键的个数

        4.Map集合的获取功能

                1)V get(Object key):根据键获取值

                2)Set <K> keySet():获取所有键的集合

                3)Collection <V> values():获取所有值的集合

                4)Set <Map.Entry <K,V> > entrySet():获取所有键值对对象的集合

        5.Map集合的遍历

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

                方式二:用Set <Map.Entry <K,V> > entrySet()方法获取所有键值对对象的集合,用增强for遍历键值对对象的集合并获取每一个键值对对象,用getKey()方法得到键,用getValue()方法得到值。

二、案例一

        1.需求

                创建一个HashMap集合,键是学号(String),值是学生对象(Student),存储元素并遍历集合。

        2.思路

  • 定义学生类
  • 创建HashMap集合对象
  • 创建学生对象
  • 向集合中添加元素
  • 遍历集合

        3.代码实现

                Student类:

package HashMapStudy;

public class Student {

    private String name;
    private int age;

    public Student() {
    }

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

    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;
    }
}

                Demo:

package HashMapStudy;

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

public class Demo {
    public static void main(String[] args) {
        //创建集合对象
        HashMap<String,Student> hm = new HashMap<String,Student>();

        //创建学生对象
        Student s1 = new Student("qwe",11);
        Student s2 = new Student("asd",12);
        Student s3 = new Student("zxc",13);

        //添加元素
        hm.put("js001",s1);
        hm.put("js002",s2);
        hm.put("js003",s3);

        //遍历
        Set<String> set = hm.keySet();
        for(String s : set){
            Student student = hm.get(s);
            System.out.println(s + "," + student.getName() +"," + student.getAge());
        }
        System.out.println("--------");

        Set<Map.Entry<String, Student>> entrySet = hm.entrySet();
        for (Map.Entry<String, Student> stringStudentEntry : entrySet) {
            System.out.println(stringStudentEntry.getKey()+","+stringStudentEntry.getValue().getName()+","+stringStudentEntry.getValue().getAge());
        }

    }
}

三、案例二

        1.需求

                创建一个HashMap集合,键是学生对象(Student),值是居住地(String),存储元素并遍历集合,如果学生的成员变量值相同时,则认为是同一对象

        2.思路

  • 定义学生类
  • 创建HashMap集合对象
  • 创建学生对象
  • 向集合中添加元素
  • 遍历集合
  • 重写两个方法(保证键的唯一性)

        3.代码实现

                Student类:

package HashMapStudy;

public class Student {

    private String name;
    private int age;

    public Student() {
    }

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

    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;
    }
}

                 Demo类:

package HashMapStudy;

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

public class Demo2 {
    public static void main(String[] args) {
        //创建集合对象
        HashMap<Student,String> hm = new HashMap<Student,String>();

        //创建学生对象
        Student s1 = new Student("qwe",11);
        Student s2 = new Student("asd",12);
        Student s3 = new Student("zxc",13);

        //添加元素
        hm.put(s1,"扬州");
        hm.put(s2,"盐城");
        hm.put(s3,"淮安");

        //遍历
        Set<Student> set = hm.keySet();
        for(Student s : set){
           // Student student = hm.get(s);
            System.out.println(hm.get(s) + "," + s.getName() +"," + s.getAge());
        }
        System.out.println("--------");

        Set<Map.Entry<Student, String>> entrySet = hm.entrySet();
        for (Map.Entry<Student, String> entry : entrySet) {
            System.out.println(entry.getKey().getName()+","+entry.getKey().getAge()+","+entry.getValue());
        }

    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值