HashMap的使用

本文详细介绍了HashMap的主要操作,包括put方法用于单次添加键值对,putAll方法用于合并两个HashMap并覆盖相同键的值,remove方法用于删除指定键的键值对。此外,还展示了两种遍历HashMap的方法:通过entrySet()和keySet()。文章还探讨了hashCode和equals()在HashMap中的作用,以及如何根据键获取值。
摘要由CSDN通过智能技术生成

put方法

Hashmap的put方法放值,可以单次向HashMap中添加一个键值对。没有顺序

 HashMap<String,String> hash1=new HashMap<String,String>();
        hash1.put("1","a");
        hash1.put("2","b");
        hash1.put("3","c");
        System.out.println(hash1);

结果:

putAll方法 

PutAll方法合并两个HashMap,相同键的值会被覆盖比如3=f,3这个键,接着上文添加代码

HashMap<String,String> hash2=new HashMap<>();
        hash2.put("4","d");
        hash2.put("5","e");
        hash2.put("3","f");
        hash1.putAll(hash2);
        System.out.println(hash1);

结果:

remove方法

Remove方法删除键对应的键值对,不存在删除不报错

HashMap<String,String> hash1=new HashMap<String,String>();
        hash1.put("1","a");
        hash1.put("2","b");
        hash1.put("3","c");
        System.out.println(hash1);
        hash1.remove("1");
        System.out.println(hash1);

结果:

遍历方法:entrySet() 

Hash数组.entrySet().for遍历该数组所有键值对,返回的是map对象

 HashMap<String,String> hash1=new HashMap<String,String>();
        hash1.put("1","a");
        hash1.put("2","b");
        hash1.put("3","c");
        for (Map.Entry<String, String> s : hash1.entrySet()) {
            System.out.println(s.getKey()+":="+s.getValue());
        }

结果:

 遍历方法:keySet()

HashMap的KeySet()返回所有键,是set<>数组对象.For()遍历,要返回每一项的值,hash对象.get(键)

 HashMap<String,String> hash1=new HashMap<String,String>();
        hash1.put("1","a");
        hash1.put("2","b");
        hash1.put("3","c");
        Set<String> s=hash1.keySet();
        for (String s1 : s) {
            System.out.println(s1+":="+hash1.get(s1));
        }

结果:

查询某个键的值,hashMap对象.get(“键”)

额外讲解:hashCode和equals()之间的关系


●如果两个对象的hashCode不相同,那么这两个对象肯定不同的两个对象
●如果两个对象的hashCode相同,不代表这两个对象-定是同一个对象,也可能是两个对象
●如果两个对象相等, 那么他们的hashCode就一 定相同

(键名hashCode相同且键名equals()则是一个HashMap对象)
 

hashMap使用get()获取键对应值时要先判断键名hashcode()是否相同,再进行键的equals()比较【一般键名进行比较,因为是对象键,此处重写了键名获取及比较,最后equals()返回的布尔判断get是否得值,得不到值为null】

public class hashMap {
    public static void main(String[] args) {
//        键是对象
        HashMap<User,String> hash1=new HashMap<>();
        hash1.put(new User("xx"),"12");
        System.out.println(hash1.get(new User("xx")));

        }


}
public class User {
    String name;

    public User(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    //hashMap的get方法是在两者键名hashCode()相同,这里要先声明hashcode,两个名字hashcode相同才调用键的equals方法比较
    public int hashCode(){
        return name.hashCode();
    }
    public boolean equals(Object obj){
        User user=(User)obj;
        return user.getName().equals(this.name);
        //键保证名字相同,就承认他们是相同对象,get自然能得到对应的值
    }
}

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sdjdj_ksk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值