Java中的Map

1.put方法

put方法的细节:

  • 添加/覆盖
  • 在添加数据的时候,如果键不存在,那么直接把键值对对象添加到map集合当中,方法返回null
  • 在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,会把覆盖的值进行返回。

2.remove方法

 String key = m.remove("郭靖");
 System.out.println(key);

3.判断是否包含

boolean keyResult = m.containsKey("郭靖");
System.out.println(keyResult);
boolean valueResult = m.containsValue("小龙女");
System.out.println(valueResult);

4.判断是否为空

boolean result = m.isEmpty();
System.out.println(result);

5.集合的长度

int size = m.size();
System.out.println(size);

6.Map的遍历方式

1)键找值
package dailyTest;

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

/**
 * @author 
 * @createtime 2023/9/8 17:28
 */
public class A02_MapDemo2 {
    public static void main(String[] args) {
        //map集合的第一种遍历方式
        //1.创建Map集合的对象
        Map<String,String> map = new HashMap<>();
        map.put("尹志平","22");
        map.put("郭靖","11");
        
        Set<String> keys = map.keySet();
//        Iterator<String> iterator = keys.iterator();
//        keys.forEach();

        for (String key:keys){
            System.out.println(key);
            String value = map.get(key);
            System.out.println(key+"="+value);
        }
    }
}
2)键值对
package dailyTest;

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

/**
 * @author 
 * @createtime 2023/9/11 18:18
 */
public class A03_MapDemo3 {
    public static void main(String[] args) {
        //map集合的第一种遍历方式
        //1.创建Map集合的对象
        Map<String,String> map = new HashMap<>();
        //2.添加元素
        map.put("尹志平","22");
        map.put("郭靖","11");

//        Set<String> keys = map.keySet();
//        Iterator<String> iterator = keys.iterator();
//        keys.forEach();
//        3.1通过一个方法获取所有的键值对对象,返回一个set集合
        Set<Map.Entry<String, String>> entries = map.entrySet();
//        3.2遍历entries这个集合,去得到里面的每一个键值对对象
        for (Map.Entry<String, String> entry : entries) {
//            3.3利用entry调用get方法获取键和值
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"="+value);
        }
    }
}
3)Lambda表达式
package dailyTest;

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

/**
 * @author 
 * @createtime 2023/9/11 18:18
 */
public class A04_MapDemo4 {
    public static void main(String[] args) {
        //map集合的第一种遍历方式
        //1.创建Map集合的对象
        Map<String,String> map = new HashMap<>();
        //2.添加元素
        map.put("尹志平","22");
        map.put("郭靖","11");

//        Set<String> keys = map.keySet();
//        Iterator<String> iterator = keys.iterator();
//        keys.forEach();
//        3利用lambda表达式进行遍历
        map.forEach(new BiConsumer<String, String>() {
            @Override
            public void accept(String key, String value) {
                System.out.println(key+"="+value);

            }
        });
        System.out.println("------------");
        map.forEach((String key, String value) ->{
                System.out.println(key+"="+value);
        });
        System.out.println("------------");
        map.forEach(( key,  value) -> System.out.println(key+"="+value));
    }
}

7.Hashmap

7.1Hashmap的特点
  • HashMap是Map里面的一个实现类
  • 没有额外需要学习的特有方法,直接使用Map里面的方法就可以了
  • 特点都是由键决定的:无序、不重复、无索引
  • HashMap跟HashSet底层原理是一模一样的,都是哈希表结构
//Student.java
package dailyTest;

import java.util.Objects;

/**
 * @author 
 * @createtime 2023/9/12 10:15
 */
public class Student {
    private String name;
    private int age;

    public Student() {
    }

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

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.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);
    }

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

HashMapDemo5.java

//HashMapDemo5.java
package dailyTest;

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

/**
 * @author fanfangyu1
 * @createtime 2023/9/12 10:17
 */
public class A05_HashMapDemo5 {
    public static void main(String[] args) {
        /**
         * 需求:创建一个HashMap集合:键是学生对象(Student),值是籍贯(String)
         * 存储3个键值对元素,并遍历
         * 要求:同姓名,同年龄认为是同一个学生
         * 核心点:
         * HashMap的键位置如果存储的是自定义对象,需要重写hashCode和equals方法
         */
        //1.创建HashMap的对象
        HashMap<Student,String> hm = new HashMap<>();
        //2.创建3个学生对象
        Student s1 = new Student("zhangsan",23);
        Student s2 = new Student("lisi",24);
        Student s3 = new Student("wangwu",25);
        //3.添加元素
        hm.put(s1,"江苏");
        hm.put(s2,"浙江");
        hm.put(s3,"福建");
        //4.遍历集合
        Set<Student> keys = hm.keySet();
        for(Student key:keys){
            String value = hm.get(key);
            System.out.println(key+"="+value);
        }
        System.out.println("-----------------");
        Set<Map.Entry<Student, String>> entries = hm.entrySet();
        for (Map.Entry<Student,String> entry:entries
             ) {
            Student key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"="+"value");
        }
        System.out.println("-------------++++");

        hm.forEach(new BiConsumer<Student, String>() {
            @Override
            public void accept(Student student, String s) {
                System.out.println(student+"="+s);
            }
        });
        

    }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值