Map接口和常用方法以及对HashMap的总结

举报
荞慧子 发表于 2022/12/31 19:40:34 2022/12/31
【摘要】 Map接口和常用方法Map接口实现类的特点(jdk1.8)(1)Map与Collection并列存在,用于保存具有映射关系的数据:Key-Value(2)Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中(3)Map中的key不允许重复,原因和HashSet一样(4)Map中的value可以重复(5)Map中的key可以为null,value也可以为...

Map接口和常用方法

Map接口实现类的特点(jdk1.8)

(1)Map与Collection并列存在,用于保存具有映射关系的数据:Key-Value

(2)Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中

(3)Map中的key不允许重复,原因和HashSet一样

(4)Map中的value可以重复

(5)Map中的key可以为null,value也可以为null,注意key为null,只能有一个;value为null,可以有

多个

(6)常用String类作为Map的key

(7)key和value之间存在单向一对一关系,即通过指定的key总能找到对应的value

代码演示

import java.util.HashMap;
import java.util.Map;
@SuppressWarnings({"all"})
public class Map_ {
public static void main(String[] args) {

       
        Map map = new HashMap();
        map.put("no1", "周小末");//k-v
        map.put("no2", "张无忌");//k-v
        map.put("no1", "张三丰");//当有相同的 k , 就等价于替换. map.put("no3", "张三丰");//k-v
        map.put(null, null); //k-v
        map.put(null, "abc"); //等价替换
        map.put("no4", null); //k-v
        map.put("no5", null); //k-v
        map.put(1, "赵敏");//k-v
        map.put(new Object(), "金毛狮王");//k-v
        // 通过 get 方法,传入 key ,会返回对应的 value
        System.out.println(map.get("no2"));//张无忌
        System.out.println("map=" + map);
    }
}

(8)Map存放数据的key-value,一对key-value是放在一个HashMap$Node中的,因为Node实现了

Entry接口

Map接口常用方法

import java.util.HashMap;
import java.util.Map;
@SuppressWarnings({"all"})
public class MapMethod {
    public static void main(String[] args) {
        //演示 map 接口常用方法
        Map map = new HashMap();
        map.put("邓超", new Book("", 100));//OK
        map.put("邓超", "孙俪");//替换
        map.put("王宝强", "马蓉");//OK
        map.put("宋喆", "马蓉");//OK
        map.put("刘令博", null);//OK
        map.put(null, "刘亦菲");//OK
        map.put("鹿晗", "关晓彤");//OK
        map.put("hsp", "hsp 的老婆");
        System.out.println("map=" + map);
        
        // remove:根据键删除映射关系
        map.remove(null);
        System.out.println("map=" + map);
        
        // get:根据键获取值
        Object val = map.get("鹿晗");
        System.out.println("val=" + val);
        
        // size:获取元素个数
        System.out.println("k-v=" + map.size());
        
        // isEmpty:判断个数是否为 0
        System.out.println(map.isEmpty());//F
        
        // clear:清除 k-v
        //map.clear();
        System.out.println("map=" + map);
        
        // containsKey:查找键是否存在
        System.out.println("结果=" + map.containsKey("hsp"));//T
    }
}

class Book {

    private String name;
    private int num;
    public Book(String name, int num) {
        this.name = name;
        this.num = num;
    }
}

Map接口遍历方法

(1)containsKey:查找键是否存在

(2)KeySet:获取所有的键

(3)entrySet:获取所有关系k-v

(4)values:获取所有的值

HashMap总结

(1)Map接口的常用实现类:HashMap、Hashtable和Properties

(2)HashMap是Map接口使用频率最高的实现类

(3)HashMap是以key-value对的方式来存储数据(HashMap$Node类型)

(4)key不能重复,但是值可以重复,允许使用null键和null值

(5)如果添加相同的key,则会覆盖原来的key-value,等同于修改(key不会替换,value会替换)

(6)与HashSet一样,不保证映射的顺序,因为底层是以hash表的方式来存储的

(7)HashMap没有实现同步,因此线程是不安全的,方法没有做同步互斥的操作,没有synchronized

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。