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 {@Testpublic 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 {@Testpublic 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;}@Overridepublic String toString() {return "Student{" +"no='" + no + '\'' +", name='" + name + '\'' +", age=" + age +'}';}
}
-
测试类
public class TestDemo {@Testpublic 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);}}}