1.HashMap的构造
HashMap<Integer,String> Stu=new HashMap<>();
第一个称为“键”,第二个为“值”,键和值是一一对应的,即一个键只能对应一个值。
2.HashMap常用API
Stu.put(1,"张三");//添加元素,如果再次使用该键,则修改值
Stu.get(key)//获取键所对应的值
Stu.containsKey(key)//是否包含该键
Stu.remove(key)//移除该键值对
3.HashMap两种遍历方式
(1)键找值
通过Stu.KeySet()方法返回一个关于键的Set集合,并通过键找到对应的值
Set<Integer> StuKey = Stu.keySet();
for (Integer i : StuKey) {
String name=Stu.get(i);
//通过“键找值”遍历打印
System.out.println("Key="+i+",value="+name);
}
(2)键值对
Stu.entrySet()返回一个键值对Set集合,对象类型为Map.Entry
Set<Map.Entry<Integer, String>> entries = Stu.entrySet();
for (Map.Entry<Integer, String> entry : entries) {
System.out.println("key="+entry.getKey()+",value="+entry.getValue());
}
此处用到的API:
Entry.getKey();//获取该对象的键
Entry.getValue();//获取该对象的值
4.LinkedHashMap
大部分内容和上面是一样的,需要注意的是:如果要避免某个属性重复,则需要重写equals方法和hashcode方法,例如为了避免学号(ID)重复,需要这样重写(快捷键Alt+Insert,需要修改一点内容):
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return Objects.equals(ID, student.ID) ;
}
@Override
public int hashCode() {
return ID.hashCode();
}