Map集合

本文详细介绍了Java Map集合的特点,如键值对结构、键的唯一性和值的可重复性,并展示了如何使用HashMap实例,添加三个学生对象,处理重复键的情况,以及如何通过keySet()和迭代器遍历集合并打印结果。
摘要由CSDN通过智能技术生成

 Map集合的特点
        特点:
            双列集合,元素由键值对(Entry)构成:
            key(键) -- value(值)
        注意:
            键(key)不可以重复,值(value)可以重复
        应用:
            Map<T1, T2> map = new HashMap<>();
            解释:
                T1: 表示键的数据类型.
                T2: 表示值的数据类型
        成员方法:
            V put(K key,V value);  添加元素(键值对的形式),
                                   元素第一次添加, 返回null,
                                   重复添加, 会用新值覆盖旧值, 并返回旧值.

            V get(Object key);     根据键获取其对应的值
            Set<K> keySet();       获取所有键的集合.

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

public class MapTest {
    public static void main(String[] args) {
        //需求:往map集合中添加三个学生对象并打印。
//        1.创建集合对象
//        键:学生的编号;值:具体的学生对象
        Map<Integer,Student> map=new HashMap<>();

//        2.创建元素对象
        Student s1=new Student("张三",23);
        Student s2=new Student("李四",23);
        Student s3=new Student("张三",23);
//        3.将元素对象添加到集合中去

//        4.遍历集合,打印结果
        System.out.println(map);
    }
}
//学生类

import java.util.Objects;

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

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age &&
                Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

因为没有进行3.将元素对象添加到集合中,所以map集合是空的打印结果为空

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

public class MapTest {
    public static void main(String[] args) {
        //需求:往map集合中添加三个学生对象并打印。
//        1.创建集合对象
//        键:学生的编号;值:具体的学生对象
        Map<Integer,Student> map=new HashMap<>();

//        2.创建元素对象
        Student s1=new Student("张三",23);
        Student s2=new Student("李四",23);
        Student s3=new Student("张三",23);
//        3.将元素对象添加到集合中去
        Student stu1=map.put(1,s1);//返回Student类型的对象,用stu1接收。
        System.out.println("stu1:"+stu1);

//        4.遍历集合,打印结果
        System.out.println(map);
    }
}

元素第一次添加, 返回null,

 重复添加, 会用新值覆盖旧值, 并返回旧值.

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

public class MapTest {
    public static void main(String[] args) {
        //需求:往map集合中添加三个学生对象并打印。
//        1.创建集合对象
//        键:学生的编号;值:具体的学生对象
        Map<Integer,Student> map=new HashMap<>();

//        2.创建元素对象
        Student s1=new Student("张三",23);
        Student s2=new Student("李四",23);
        Student s3=new Student("张三",23);
//        3.将元素对象添加到集合中去
        Student stu1=map.put(1,s1);//存储键为1,学生为张三的对象添加进去,第一次添加返回null
        Student stu2=map.put(1,s2);//键1已经存在,新值s2覆盖旧值,返回旧值。stu2记录的是旧值
        System.out.println("stu1:"+stu1);
        System.out.println("stu2:"+stu2);

//        4.遍历集合,打印结果
        System.out.println(map);
    }
}

打印结果

实际工作中3.将元素对象添加到集合中会用如下代码,就是以上代码的3.用下边的代码替换

        map.put(1,s1);
        map.put(2,s2);
        map.put(3,s3);

 

打印结果

4.遍历步骤:

双列集合不能直接遍历,要通过keySet()获取键值从而将集合转换成单列集合。
            1. 获取所有键的集合.                 keySet()
            2. 遍历所有的键, 获取到每一个键.     迭代器, 增强for.
            3. 根据键, 获取指定的值.            get()

//        4.遍历集合,打印结果
        Set<Integer> keys=map.keySet();

//        使用迭代器
        Iterator<Integer> it=keys.iterator();
        while (it.hasNext()){
            //如果迭代器中有数据,就获取
            Integer key=it.next();
            //根据键获取值ue
            Student value=map.get(key);
            System.out.println("key: " + key + "...value:" + value);
        }
        System.out.println(map);
    }

打印结果

使用增强for循环遍历集合

        Set<Integer> keys2=map.keySet();
        for(Integer key:keys2){
            Student value=map.get(key);
            System.out.println("key: " + key + "...value:" + value);

        }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值