6.3 Map接口

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 values()

返回此映射中包含的值的Collection集合

Set>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 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);
        }
    }

}

你可能感兴趣的:(Java程序设计,java,map)