Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为映射。Map中键对象Key不允许重复,访问Map集合中的元素时,只要指定了Key,就能找到对应的Value。
1. Map接口常用方法
方法声明 | 功能描述 |
void put(Object key, Object value) | 将指定的值和键存入到集合中,并进行映射关联 |
Object get(Object key) | 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null |
void clear() | 移除所有的键值对元素 |
V remove(Object key) | 根据键删除对应的值,返回被删除的值 |
int size() | 返回集合中的键值对的个数 |
boolean containsKey(Object key) | 如果此映射包含指定键的映射关系,则返回 true。 |
boolean containsValue(Object value) | 如果此映射将一个或多个键映射到指定值,则返回 true |
Set keySet() | 返回此映射中包含的键的Set集合 |
Collection<V> values() | 返回此映射中包含的值的Collection集合 |
Set<Map.Entry<K,V>>entrySet() | 返回此映射中包含的映射关系的Set集合 |
2. HashMap
HashMap集合是Map接口的一个实现类,HashMap集合中的大部分方法都是Map接口方法的实现。在开发中,通常把HashMap集合对象的引用赋值给Map接口变量,那么接口变量就可以调用类实现的接口方法。HashMap集合用于存储键值映射关系,但HashMap集合没有重复的键并且键值无序。
public class TestDemo {
@Test
public void test(){
Map map = new HashMap(); // 创建HashMap对象
map.put("1", "张三"); // 存储键和值
map.put("2", "李四");
map.put("3", "王五");
System.out.println("1:" + map.get("1")); // 根据键获取值
System.out.println("2:" + map.get("2"));
System.out.println("3:" + map.get("3"));
}
}
3. HashMap遍历
public class TestDemo {
@Test
public void test(){
Map map = new HashMap(); // 创建HashMap集合
map.put("1", "张三"); // 存储键和值
map.put("2", "李四");
map.put("3", "王五");
Set keySet = map.keySet(); // 获取键的集合
Iterator it = keySet.iterator(); // 获取Iterator对象
while (it.hasNext()) {
Object key = it.next();
Object value = map.get(key); // 获取每个键所对应的值
System.out.println(key + ":" + value);
}
}
}
4. HashMap练习
Map存储多个学生信息,key为学生学号,value为学生信息(学号、姓名、年龄),遍历输出学生信息。
-
Student类
public class Student {
private String no;
private String name;
private int age;
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"no='" + no + '\'' +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
-
测试类
public class TestDemo {
@Test
public void test(){
Map<String,Student> map = new HashMap();
Student stu1 = new Student();
stu1.setNo("1001");
stu1.setName("张三");
stu1.setAge(20);
map.put(stu1.getNo(),stu1); //map存储第一个对象
Student stu2 = new Student();
stu2.setNo("1002");
stu2.setName("李四");
stu2.setAge(22);
map.put(stu2.getName(),stu2); //map存储第二个对象
//遍历
Set keySet = map.keySet();
Iterator it = keySet.iterator();
while(it.hasNext()){
String key = (String) it.next();
Student stu = map.get(key);
System.out.println(stu);
}
}
}