Map之HashMap

 Map接口

  • Map内存储的是键/值对这样以成对的对象组(可以把一组对象当成一个元素),通过“键”对象来查询“值”对象
  • Map是不同于Collection的另外一种集合接口
  • Map中,key值是唯一的(不能重复),而key对象是与value对象关联在一起的
  • Map接口有两个实现:
    • HashMap — key/value对 是按照Hash算法存储的 TreeMap — key/value对是排序 (按key排序)存储的

写入和遍历顺序不同且不重复 无序与set差不多     

Map再次存入相同键时会覆盖原先的值

主类

package JavaSE.集合.Map接口;

import java.util.*;

public class MyMap {
    public static void main(String[] args) {

        //对象的创建
        Map<String, Student> map = new HashMap<>();


        List<Student> stuList = new ArrayList();
        stuList.add(new Student("张飞", 50));
        stuList.add(new Student("张飞1", 36));
        stuList.add(new Student("张飞2", 20));
        stuList.add(new Student("张飞3", 58));

        //如果要查找某一个元素的属性,需要遍历集合后查找元素才能获取舒心
        for (Student student : stuList) {
            if ("张飞3".equals(student.getName())) {
                System.out.println("student.age\t" + student.getAge());
                break;
            }
        }


        //put key不可以重复
        map.put("张飞", new Student("张飞", 50));
        map.put("张飞1", new Student("张飞1", 36));
        map.put("张飞2", new Student("张飞2", 20));
        map.put("张飞3", new Student("张飞3", 58));
        map.put("张飞3", new Student("张飞3", 999));
        //get根据key获取指定的元素,底层使用hash计算索引,快速查找元素
        Student stu = map.get("张飞3");
        System.out.println(stu.getAge());

        Set<String> keySet = map.keySet();
        for (String key : keySet) {
            System.out.printf("key:%s\tvalue:%s\r\n", key, map.get(key).toString());
        }

        /**
         * int size()
         * void clear()
         * boolean isEmpty()
         */

        System.out.println("map.size\t" + map.size());
        System.out.println("map.isEmpty\t" + map.isEmpty());

        Map map2 = new HashMap();
        map2.put("张飞3", new Student("张飞3", 999));
        map2.put("张飞4", new Student("张飞4", 20));
        Student zf5 = new Student("张飞5", 58);
        map2.put("张飞5", zf5);


        map.putAll(map2);
        System.out.println("map.size\t" + map.size());

        System.out.println("map.get(\"张飞3\")\t" + map.get("张飞3").getAge());

        System.out.println("map.containsKey(\"张飞\")\t" + map.containsKey("张飞"));
        System.out.println("map.containsKey(\"张飞99\")\t" + map.containsKey("张飞99"));


        System.out.println("map.containsValue(new Student(\"张飞5\",58)\t" + map.containsValue(zf5));

        System.out.println("========================size==============================");
        System.out.println("map.size\t" + map.size());
        map.remove("张飞3");
        System.out.println("map.size\t" + map.size());

        System.out.println("===========================HashMap的遍历1==================================");

        Set<String> keySet1 = map.keySet();
        for (String key : keySet1) {
            System.out.printf("key:%s\tvalue:%s\r\n", key, map.get(key).toString());
        }
        System.out.println("===========================HashMap的遍历2==================================");
        Set<Map.Entry<String, Student>> entrySet = map.entrySet();
        for (Map.Entry<String, Student> stringStudentEntry : entrySet) {
            String key = stringStudentEntry.getKey();
            Student value = stringStudentEntry.getValue();
            System.out.printf("key:%s\tvalue:%s\r\n", key, value.toString());
        }
    }
    }

 Student类

package JavaSE.集合.Map接口;

public class Student {
    private String name;
    private  Integer age;

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

猜你喜欢

转载自blog.csdn.net/wqr111/article/details/118387256