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自然能得到对应的值
}
}
结果: