✔
25.1 Map集合概述
1.Map集合包含键值对;
2.Map集合的创建规则:
Map<键的数据类型,值的数据类型> mapList = new HashMap<键的数据类型,值的数据类型>();
3.HashMap集合中的Hash表保证了键不可重复,如果重新使用了存在的键,则是修改操作,将覆盖上一个该键对应的值;当键是不同new的学生对象时,如果要把相同属性值的学生对象认为是相同键,则要重写equals和hashCode方法;如果是同一个new出来的学生对象作为键,则就是相同键;
4.HashMap的值可以重复,一个值可以对应多个键;
5.可以直接打印对象,因为HashMap重写了toString方法;
6.Map集合是一个接口;
25.2 基本代码实现
import java.util.HashMap;
import java.util.Map;
public class Demo0726 {
public static void main(String[] args) {
Map<Integer, String> mapList = new HashMap<Integer, String>();
mapList.put(100,"zhangsan");
mapList.put(101,"zhangsan");
mapList.put(102,"wangwu");
mapList.put(100,"lisia");
System.out.println(mapList);
}
}
25.3 Map集合的方法
put();//向集合中添加键值对,一次只能添加一对
remove();//根据键移除键值对
isEmpty();//判断集合是否为空
clear(); //清空集合,没有返回值
size();//获取集合的长度
containsKey();//判断集合中是否存在该键
containsValue(); //判断集合中是否存在该值
get(); // 根据键获取值
keySet();//获取键集合,返回的是一个Set集合,用增强for循环去遍历
values();获取值集合,返回的是一个Set集合,用增强for循环去遍历
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo0726 {
public static void main(String[] args) {
Map<Integer, String> mapList = new HashMap<Integer, String>();
mapList.put(100,"zhangsan");
mapList.put(101,"zhangsan");
mapList.put(102,"wangwu");
mapList.put(100,"lisia");
System.out.println("删除前的集合:"+mapList);
System.out.println(mapList.remove(100)); // 根据键删除值,返回删除键对应的值
System.out.println("删除后的集合:"+mapList);
System.out.println(mapList.containsKey(101)); //根据键找值,返回boolean
System.out.println(mapList.containsValue("wangwu")); //根据值找键,返回boolean
System.out.println(mapList.isEmpty());// 判断集合是否为空
System.out.println(mapList.size());//获取集合长度
System.out.println(mapList.get(102));// 根据键获取值
Set<Integer> keySet = mapList.keySet(); // 获取键集合
for (int key : keySet){
System.out.println(key);
System.out.println(mapList.get(key));//根据键找值
}
Collection<String> values = mapList.values();// 获取值集合
for (String value : values){
System.out.println(value);
}
mapList.clear();
System.out.println(mapList);
}
}
25.5 键值对的遍历
键值对的遍历可以使用keySet()方法得到一个key的集合,再遍历该集合每次遍历调用get方法即可获取每个key对应的值:
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo4 {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1,"zhangsan");
map.put(2,"zhangsan1");
map.put(3,"zhangsan2");
map.put(4,"zhangsan3");
Set<Integer> keys = map.keySet();
for (Integer key:keys){
System.out.println(key+":"+map.get(key));
}
}
}
此外,还可以调用entrySet()方法,获取键值对对象,包含了键和值:
然后,遍历键值对对象,使用getKey方法获取键,使用getValue方法获取值即可:
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo4 {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1,"zhangsan");
map.put(2,"zhangsan1");
map.put(3,"zhangsan2");
map.put(4,"zhangsan3");
System.out.println(map);
Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
for (Map.Entry<Integer, String> me : entrySet){
System.out.println(me.getKey()+":"+me.getValue());
}
}
}